python小课——零基础入门——学习笔记大数据 爬虫Python AI Sql

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

2021-04-14  本文已影响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后面便没有输出。
上一篇 下一篇

猜你喜欢

热点阅读