python中对递归函数的认识

我们两清 提交于 2019-11-28 03:37:54

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 num
 9 #调用函数
10 print(recursion_sum(5)执行结果

递归函数在内存中以栈的方法进行进栈、出栈操作图如下:

 


 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!