提问者:小点点

递归阶乘函数最大递归深度python


大家好,我做了一个递归阶乘来将它与普通阶乘进行比较,问题是它只到达数字5,并且在那里它被损坏了

调用Python对象时超过最大递归深度

import time

def factorial(n):
    res=1
    while n>1:
        res*=n
        n-=1
    return res

def factorial_r(n):
    print(n)
    if n==1:
        return 1
    return n*factorial_r(n-1)

if __name__=="__main__":
    n=1000
    c=time.time()
    factorial(n)
    f = time.time()
    print(f-c)

    c =time.time()
    factorial_r(n)
    f = time.time()
    print(f-c)

factorial_r是不是有什么我不太理解的地方?我做错了什么?


共1个答案

匿名用户

我不知道您使用的是哪个版本的Python,但问题是Python确实有递归限制。意思是,堆栈深度是有限的。这实际上是一个有用的特性,可以避免意外的无限递归循环。

请参阅Python中的最大递归深度是多少,以及如何增加它?

他们建议的地方

import sys
sys.setrecursionlimit(1500)