如何增加 Python 中的最大递归深度? [复制]

Posted

技术标签:

【中文标题】如何增加 Python 中的最大递归深度? [复制]【英文标题】:How could you increase the maximum recursion depth in Python? [duplicate] 【发布时间】:2016-02-18 20:47:59 【问题描述】:

今天课堂上递归和堆栈溢出的有趣话题,我想知道是否有任何方法可以增加 Python 中的最大递归深度?写了一个使用递归查找 n 阶乘的快速函数:

def factorial(n):
    if n == 1:
        return n
    else:
        return n * factorial(n-1)

它可以处理阶乘(994),但不能处理阶乘(995)。给出的错误是:

RuntimeError: maximum recursion depth exceeded in comparison

显然可以迭代找到更高的阶乘,但是为了争论和阴谋,最大递归深度可以增加吗?

【问题讨论】:

docs.python.org/2/library/sys.html#sys.setrecursionlimit 注意这里避免过多递归的标准方法是使用记忆化。 不,这里没有仇恨。我们都在这里帮助他人。作为骗子关闭并不意味着我们你。未来一切顺利。 如果使用递归实现阶乘程序是必要的。您可以通过以下方式实现它,该方式能够使用 python 无限制地找到阶乘。 drive.google.com/file/d/1A0z9eyXD5mNIAZRotX5RM2QAu9bbZqHa/… 【参考方案1】:
import sys

sys.setrecursionlimit(2000)

【讨论】:

【参考方案2】:
import sys

iMaxStackSize = 5000
sys.setrecursionlimit(iMaxStackSize)

【讨论】:

以上是关于如何增加 Python 中的最大递归深度? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Python:调用 Python 对象时超出了最大递归深度

PyQt4 python中的“RuntimeError:调用Python对象时超出最大递归深度”错误

RecursionError:重命名列条目后调用 Python 对象时超出最大递归深度

调用 Python 对象进行连续场景更新时超出最大递归深度

为啥 Python 有最大递归深度?

Python_自定义递归的最大深度