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)

执行结果

 


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

 

 

 



 

posted @ 2019-08-21 17:04  春香  阅读(311)  评论(0编辑  收藏  举报