首页 > 解决方案 > 递归阶乘函数最大递归深度python

问题描述

大家好,我做了一个递归阶乘以将其与普通阶乘进行比较,问题是它只达到数字 5 并且在那里它被损坏了

错误:RecursionError:调用 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 确实有递归限制。意思是,堆栈深度是有限的。这实际上是一个有用的功能,可以避免意外的无限递归循环。

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

他们建议的地方

import sys
sys.setrecursionlimit(1500)

推荐阅读