zoukankan      html  css  js  c++  java
  • 【Python022--递归】

    一、递归

    1、写一个求阶乘的函数

    --正整数阶乘指从1乘以2乘以3乘以4一直乘到所要求的数

    --普通的代码编写方式:

    def factorial(n):
        result = n
        for i in range(1,n):
            result *=i

        return result

    member = int(input('请输入一个整数:'))
    result = factorial(member)
    print('%d 的阶乘是:%d' %(member,result))

    '''执行结果:
    请输入一个整数:6
    6 的阶乘是:720'''

    ---递归的代码编写方式(满足递归的条件:1、调用函数自身,2、设置了正确的自身返回值)

    def factorial(n):
        if n == 1:
            return 1
        else:
            return n*factorial(n-1)

    member = int(input("请输入一个整数:"))
    result = factorial(member)
    print("%d 的阶乘是:%d" %(member,result))

    '''执行结果:
    请输入一个整数:8
    8 的阶乘是:40320'''

    ---代码分析:

    二、练习题:

    1、思考一下,按照递归的特性,在编程中有没有不得不使用递归的情况?

    例如:汉诺塔,目录索引(因为你永远不知道这个目录里边是否还有目录),快速排序,树结构的定义等如果使用递归,会事半功倍,负责呆滞程序无法实现或相当难以理解

    2、使用递归编写一个power()函数模拟内建函数pow(),即power(x,y)为计算并返回x的y次幂的值

    print('=====递归写法=====')
    def power(x, y):
        if y:
            return x * power(x, y-1)
        else:
            return 1
        
    print(power(2, 3))

    print('=====普通编写=====')
    def poewr(x,y):
        length = len(y)
        for i in range(length):
            result = x*i

        return result

    print(power(2,3))

    '''
    执行结果:
    =====递归写法=====
    8
    =====普通编写=====
    8'''

  • 相关阅读:
    配置caffe matlab 中遇到的坑
    VGGnet论文总结(VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION)
    内核笔记
    VM上安装centos6.x & java & tomcat & mysql
    ----
    python 入门笔记
    centos7 安装 mysql & jetty
    VM 中 CentOS 6 的相关配置
    论文 单词句子笔记
    Android 百度地图开发(三)--- 实现比例尺功能和替换自带的缩放组件
  • 原文地址:https://www.cnblogs.com/frankruby/p/9188586.html
Copyright © 2011-2022 走看看