繁体   English   中英

递归阶乘 function 最大递归深度 python

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM