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后面便没有输出。
网友评论