【发布时间】:2011-08-16 16:20:17
【问题描述】:
我有一个关于 sys.setrecursionlimit()
来自pythondocs这个函数:
设置Python解释器栈的最大深度为limit。此限制可防止无限递归导致 C 堆栈溢出和 Python 崩溃。
可能的最高限制取决于平台。当用户有一个需要深度递归的程序和一个支持更高限制的平台时,她可能需要将限制设置得更高。这应该小心执行,因为过高的限制会导致崩溃。
这是我的问题:
我们来看看这个没用的递归函数:
def rec(N):
if N==0:
return 1
else:
return rec(N-1);
现在让我们将最大递归设置为 100:
sys.setrecursionlimit(100)
如果我尝试rec(99)(100 次递归调用),我会得到:
RuntimeError: maximum recursion depth exceeded
要计算rec(99),我需要将递归限制设置为 105。
为什么会这样?
【问题讨论】: