2

这是我的函数 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。有什么建议么?

4

2 回答 2

3

文档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)
于 2012-10-26T13:17:23.480 回答
-1

There was an error in my calculation apologies. The function does not in fact crash on foo(10) but simply makes 4 billion calls but halts correctly.

于 2012-10-26T14:51:57.863 回答