python - python递归深度是如何计算的?

标签 python recursion

这是我的函数 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/

相关文章:

python - 如何停止 Python 中的短路?

python - Django 自定义管理器 get_queryset() 不工作

string - 递归和内存算法的运行时错误

java - 打印子集的最佳递归算法

java - 生成代表数字的组合

recursion - VHDL 递归组件/实体

递归查找 "happy"nums 的 C 程序

python - 如何处理模块中的全局变量?

python - 使用 boost python 将 C 结构作为 numpy 数组传递给 python

python - CVXPY 二次规划; ArpackNoConvergence 错误