VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > python入门教程 >
  • python基础(补充):递归的深度

相信用过python递归的朋友可能都碰到过:

RecursionError: maximum recursion depth exceeded while getting the str of an object,

显而易见超过递归深度了,那么python的递归深度到底是多少呢?

1|0递归的理论深度


在计算机系统上根据计算机性能,是有默认递归深度的,根据机器性能不同可能会有一个不同递归深度。

但是,python告诉我的是默认递归深度是1000(我这里说的是默认深度,那些手动修改过的勿喷)


copyimport sys sys.getrecursionlimit() # 可以通过上述代码

具体以图为证:

那么问题来了真的是1000吗?

2|0递归的实际深度

这里以斐波那契函数为例进行实测:


copydef fib(n): if n <= 2: return 1 else: return fib(n - 1) + fib(n - 2)

本地实测结果:

疑问又来了,递归的上限可以调整吗?调整后上限又是多少?

3|0递归上限调整


copyimport sys sys.setrecursionlimit(设置上限值) # 使用上述代码就可以调整; # 我们调整到3000,验证一下: # 为了以示清白设置生效后上图:

可以看到已经生效,下面开始验证:

4|0递归的最大深度

理论上递归的深度是可以上万的。由于我的机器比较渣,这里就不测试了(狗头保命),感兴趣的朋友可以自己尝试一下

__EOF__

作  者pure3417 出  处:https://www.cnblogs.com/pure3417/p/14668959.html


相关教程