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