Python递归函数介绍

Posted 尹正杰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python递归函数介绍相关的知识,希望对你有一定的参考价值。

                  Python递归函数介绍

                                作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

 

 

一.递归函数的工作原理

1.案例展示

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
 5 #EMAIL:y1053419035@qq.com
 6 
 7 
 8 import sys
 9 # print(dir(sys))
10 # sys.setrecursionlimit(1000000)          #修改默认递归调用的次数,不建议修改!
11 # print(sys.getrecursionlimit())        #查看递归函数的最大可以调用的次数,默认是可以调用1000次;
12 
13 
14 def Age(n):
15     if n == 5:      #指定明确的递归结束条件;
16         return 18
17     return Age(n+1)+2
18 
19 
20 print(Age(1))
21 
22 """
23 递归函数:
24         1>.递归函数必须要有一个明确的结束条件
25             递归函数效率低,需要在进入下一次递归是保留当前的状态,解决方法是尾递归,即在函数的最后一步
26 (而非最后一行)调用自己,但是Python又没有尾递归,且对递归层级做了限制。
27         2>.每次进入更深一层递归时,问题规模相比上次递归都应有所减少;
28         3>.递归效率不高,递归层次过多会导致栈溢出;
29 
30 """
31 
32 
33 
34 
35 #以上代码执行结果如下:
36 26

2.图解递归函数

二.小试牛刀

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
 5 #EMAIL:y1053419035@qq.com
 6 
 7 
 8 
 9 
10 def PiercingEye(List):
11     for item in List:
12         if isinstance(item, list):
13             PiercingEye(item)
14         else:
15             print(item)
16 
17 
18 ListNum = [1, [2, 3, [4, [5, 6, 7, [8, 9]]]]]
19 PiercingEye(ListNum)
20 
21 
22 
23 
24 #以上代码执行结果如下:
25 1
26 2
27 3
28 4
29 5
30 6
31 7
32 8
33 9

 

以上是关于Python递归函数介绍的主要内容,如果未能解决你的问题,请参考以下文章

Python函数

如何在自定义PyYAML构造函数中处理递归?

python笔记七(递归函数)

python中的函数递归和迭代问题

Python学习笔记八:文件操作(续),文件编码与解码,函数,递归,函数式编程介绍,高阶函数

Python代码阅读(第26篇):将列表映射成字典