如何在Python中增加最大递归深度?

13

今天在课堂上讨论了递归和堆栈溢出这个有趣的话题,我想知道是否有办法提高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

显然可以通过迭代找到更高的阶乘,但是为了争论和探究,递归的最大深度是否可以增加呢?


1
https://docs.python.org/2/library/sys.html#sys.setrecursionlimit - freakish
5
请注意,避免过多递归的标准方法是使用记忆化。 - Daniel Roseman
2
不,这里没有仇恨。我们都在这里帮助别人。关闭重复问题并不意味着我们“憎恨”你。祝你未来一切顺利。 - Bhargav Rao
如果需要使用递归实现阶乘程序,您可以使用以下方式来使用Python实现它,这种方法能够在没有任何限制的情况下找到阶乘。 https://drive.google.com/file/d/1A0z9eyXD5mNIAZRotX5RM2QAu9bbZqHa/view?usp=drivesdk - user11502953
2个回答

19
import sys

sys.setrecursionlimit(2000)

6
import sys

iMaxStackSize = 5000
sys.setrecursionlimit(iMaxStackSize)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接