zoukankan      html  css  js  c++  java
  • Python学习系列之递归函数(二十一)

    递归函数

    一、什么是递归函数

    如果在一个函数的函数体内调用了该函数本身,这个函数就称为递归函数

    二、递归的组成部分

      递归调用与递归终止条件

    三、递归的调用过程

      1.每递归调用一次函数,都会在栈内存分配一个栈帧

      2.每执行完一次函数,都会释放相应的空间

    四、递归的优缺点

      缺点:占用内存多,效率低下

      优点:思路和代码简单

    案例:计算6的阶乘

    6的阶乘示意图:

     代码:

    def fac(n):
        if n==1:
            return 1
        else:
            res=n*fac(n-1)
            return  res
    
    print(fac(6))
    

      执行结果:

      调用debug模式,可以查看函数执行过程,可以看到,先去计算fac(n-1),不会执行到return res这一行,直到n=2,执行fac(2-1)即n=1,则会执行return 1,然后向上逐层计算n*fac(n-1),将结果保存到res,一层一层向上返回计算结果,最后返回res的结果720

     一直点击debug模式的向下箭头,能看到各层的计算结果

     

      

     五、裴波那契数列

    1. 什么是裴波那契数列

    1 1 2 3 5 8 13.... 即第1个位置上是1,第2个位置上是1,第三项是前两项之和即2,第四项是3=1+2,以此类推

    2. 代码示例

    '''裴波那契数列'''
    def fib(n):
        if n==1:
            return 1
        elif n==2:
            return 1
        else:
            return fib(n-1)+fib(n-2)
    
    #求裴波那契数列第6位上的数字
    print(fib(6))
    

      执行结果:

      如果要一次输出裴波那契数列的前面6位数字呢?只需要使用一个for循环输入1-6的值即可,代码如下:

    def fib(n):
        if n==1:
            return 1
        elif n==2:
            return 1
        else:
            return fib(n-1)+fib(n-2)
    
    #求裴波那契数列前6位的数字
    for i in range(1,7):
        print(fib(i))
    

      执行结果:

     --------------------------------------------------

    函数总结

    1. 函数的定义与调用

      函数定义使用def定义

      函数定义的形参有:*定义个数可变的位置形参,**定义个数可变的关键字形参,定义默认值参数

      函数调用的实参:位置实参,关键字实参

      函数可以有多返回值

    2.变量的作用域

      变量由全局变量和局部变量,通过用global声明局部变量,可是局部变量变成全局变量

    3.递归函数

      递归函数就是函数本身调用本身

      递归的组成部分:调用条件和终止条件

  • 相关阅读:
    IDT 信息设计工具使用
    子查询
    分组函数
    多表查询
    单行函数
    基本的sql-select语句
    final关键字的使用
    非静态代码块(非static初始化块)&静态代码块(static初始化块)
    单例模式的饿汉式实现
    static关键字的应用
  • 原文地址:https://www.cnblogs.com/wx170119/p/14456851.html
Copyright © 2011-2022 走看看