递归函数
定义:在函数内部调用自身
def func(): pass func()#内部调用自身 pass func()
递归最大深度:1000附近
如果无限循环,每一次调用都会在主函数的全局名称空间当中创建一个局部名称空间,无限层叠。若一直调用下去,就会造成名称空间占用太多内存的问题,于是python为了杜绝此类现象,强制的将递归层数控制在了1000附近。
n = 0 def l_num(): global n n += 1 print(n) l_num() l_num() #打印至1000附近报错
此为默认值,可以通过调用sys模块修改:
import sys sys.setrecursionlimit(10000000)#一千万次
但究竟能循环多少次,取决于电脑性能,13年的笔记本,循环2000次附近
递归执行步骤:
逐级向下传递,逐级向上返回;每调用传递一层,内存新增一个名称空间,每返回一层,对应的名称空间消失
例:
def age(n): if n == 4: return 40 elif n > 0 and n < 4: return age(n+1)+2 else: return '输入有误' print(age(1))
执行步骤:
def age(1): if 1 == 4: return 40 elif 1 > 0 and 1 < 4: return age(1+1)+2 else: return '输入有误' def age(2): if 2 == 4: return 40 elif 2 > 0 and 2 < 4: return age(2+1)+2 else: return '输入有误' def age(3): if 3 == 4: return 40 elif 3 > 0 and 3 < 4: return age(3+1)+2 else: return '输入有误' def age(4): if 4 == 4: return 40 elif 1 > 0 and 1 < 4: return age(1+1)+2 else: return '输入有误'
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步