这是我的函数 Foo:
def Foo(n=10):
if 1<n<=10:
for i in range(1, 10):
#### Do_Something
Foo(n-1)
我得到RuntimeError: maximum recursion depth exceeded
,这很令人沮丧,因为我预计 Foo 的递归深度为 10+,远低于 python 默认的 500 限制。
我知道我会用这个 Foo 获得大量的堆栈,但这是可以忍受的。我尝试增加 sys.setrecursionlimit
并且仍然收到 RuntimeError。有什么建议吗?
最佳答案
documentation sys.setrecursionlimit
指定递归限制实际上是 python 堆栈的深度。
编辑我不知道为什么你会达到递归限制,但你可能不会因为这个函数而达到(我已经修改了它,以便它打印最大次数)在堆栈上):
count = 0
maxcount = 0
def Foo(n=10):
global count
global maxcount
count = count + 1
if(count > maxcount):
maxcount = count
print maxcount
if 1<n<=10:
for i in range(1, 10):
#### Do_Something
Foo(n-1)
count = count - 1
Foo(10)
关于python - python递归深度是如何计算的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13087579/