python基础(补充):递归的深度
我们在正经人谁用递归呀一节中,简单的讨论了python中的递归
相信用过python递归的朋友可能都碰到过:
RecursionError: maximum recursion depth exceeded while getting the str of an object,
显而易见超过递归深度了,那么python的递归深度到底是多少呢?
递归的理论深度
在计算机系统上根据计算机性能,是有默认递归深度的,根据机器性能不同可能会有一个不同递归深度。
但是,python告诉我的是默认递归深度是1000(我这里说的是默认深度,那些手动修改过的勿喷)
import sys sys.getrecursionlimit() # 可以通过上述代码
具体以图为证:
那么问题来了真的是1000吗?
递归的实际深度
这里以斐波那契函数为例进行实测:
def fib(n): if n <= 2: return 1 else: return fib(n - 1) + fib(n - 2)
本地实测结果:
疑问又来了,递归的上限可以调整吗?调整后上限又是多少?
递归上限调整
import sys sys.setrecursionlimit(设置上限值) # 使用上述代码就可以调整; # 我们调整到3000,验证一下: # 为了以示清白设置生效后上图:
可以看到已经生效,下面开始验证:
递归的最大深度
理论上递归的深度是可以上万的。由于我的机器比较渣,这里就不测试了(狗头保命),感兴趣的朋友可以自己尝试一下
分类:
python学习记录
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?