Python精简入门学习(递归篇)

作者: 码市冲冲冲 | 来源:发表于2021-04-14 22:23 被阅读0次

    Python精简入门学习(递归)

    -递归

    基于最近的观看量大部分都是对于递归章节的观看,就此我谈谈个人的观点。可能很多小伙伴对于递归有一部分了解
    但是不是很理解它的执行步骤,所以有点犯迷糊。
    

    -定义

    递归,就是在运行的过程中调用自己。
    构成递归需具备的条件:
    子问题须与原始问题为同样的事,且更为简单;
    不能无限制地调用本身,须有个出口,化简为非递归状况处理。
    

    -案例

    def digui(n):               # n=5
        if n <= 1:              # False
            return 1
        print('n=%s' % n)       # n=5
        return n * digui(n-1)   # 5*digui(n-1) digui(n-1)就是调用自身开辟一个新的空间
    print(digui(5))     # 入口
    

    -文字描述

    print(digui(5)从这里开始,这时调用函数 将5赋值给n,n=5 ,进行判断 5<=1 不满足条件,则执行 n*digui(n-1) 
    递归的本质是调用自身,这里n属于第一层空间,本层空间n=5,digui(n-1)是再次调用自身 重新开辟一个新的空间 
    是第二层空间n=5-1,本层空间n=4,进行判断4<=1 不满足条件,执行n*digui(n-1) ,开辟第三层空间,本层空间n=3,
    进行判断3<=1 不满足条件继续执行n*digui(n-1),开辟第四层空间,本层空间n=2,进行判断2<=1 不满足条件 
    继续执行n*digui(n-1),开辟第五层空间,本层空间n=1,进行判断 满足了n<=1的条件 直接返回1 不再执行调用自身
    操作。看样子是5*(4*(3*(2*(1)))),到这里并没有完成递归,只是完成了递归的递,还需要递归的归将参数传递出去,
    返回顺序是自内向外n的值为1 2 3 4 5 最终完成递归。
    
    image.png
    这里还有个n=1,因为打印输语句出在return 1后面便没有输出。
    

    相关文章

      网友评论

        本文标题:Python精简入门学习(递归篇)

        本文链接:https://www.haomeiwen.com/subject/lrgllltx.html