[英]Recursive factorial function maximum recursion depth python
大家好,我做了一个递归阶乘以将其与普通阶乘进行比较,问题是它只达到数字 5 并且在那里它被损坏了
错误:RecursionError:调用 Python object 时超出最大递归深度
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.