递归阶乘函数最大递归深度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是不是有什么我不太理解的地方?我做错了什么

我不知道您使用的是哪种版本的Python,但问题是Python确实有递归限制。也就是说,堆叠深度是有限的。这实际上是一个有用的功能,可以避免意外的无限递归循环。

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

他们建议

import sys
sys.setrecursionlimit(1500)

最新更新