大家好,我做了一个递归阶乘来将它与普通阶乘进行比较,问题是它只到达数字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)