递归因子函数的最大递归深度 python

0 人关注

大家好,我做了一个递归阶乘,想和普通的阶乘做个比较,问题是它只达到了5这个数字,在那里它就被破坏了。

错误。递归错误:调用Python对象时超过了最大递归深度

import time
def factorial(n):
    res=1
    while n>1:
        res*=n
    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)

它是阶乘_r 是否有什么我没有理解好的地方? 我做错了什么?

1 个评论
这是否回答了你的问题? 递归极限在阶乘函数中产生错误
python
Jsjsue
Jsjsue
发布于 2021-04-11
1 个回答
ubershmekel
ubershmekel
发布于 2021-04-11
已采纳
0 人赞同

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