python中对递归函数的认识
1,递归的定义
递归(Recursion Algorithm,递归算法)是指通过重复将问题分解为同类的子问题而解决问题的办法。计算理论证明递归的作用可以完全取代循环。
重复:凡是通过循环语句可实现的,都可以通过递归来实现。
将问题分解为同类的子问题:如持续循环的运算操作、持续循环的判断操作,它们的每次循环都是同样的一个“动作”,这个“动作”就是一个子问题的。
利用函数实现递归算法的过程就是递归函数。是通过自己调用自己来实现递归算法。
2,递归函数在内存中的运行原理
递归一次,就在内存中开辟一个新的地址空间,记录递归过程状态,一直递归分解到最小范围,最后得出要么找到对应的值,要么返回找不到的结果。
通俗的讲,其实是在调用栈的进栈、出栈操作过程。每递归调用自己一次,就进栈一次,并在栈列表里记录调用的内容;每返回一次,就是出栈弹出值的过程,并把值返回到上一个栈列表里,最后返回所求最终答案。
3,举例
1 #定义函数 2 def recursion_sum(num): 3 if num==1: 4 return num 5 tt=recursion_sum(num-1)+num 6 print('第%d次递归'%(num)) 7 print('返回值%d在内存中的地址:%d'%(tt,id(tt))) 8 return tt 9 #调用函数 10 print(recursion_sum(5)
执行结果
![](https://img2018.cnblogs.com/blog/1536364/201908/1536364-20190821212513572-1448303080.png)
递归函数在内存中以栈的方法进行进栈、出栈操作图如下:
![](https://img2018.cnblogs.com/blog/1536364/201908/1536364-20190821215746798-1903442843.png)