You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行简单Python递归程序时触发RecursionError报错该如何解决

问题原因

你编写的递归阶乘函数缺少递归终止条件:函数每次执行都会调用factorial(n-1),参数n会持续递减至负数,没有触发停止返回的节点,直到超过Python默认的递归深度限制(默认约1000层),就会抛出RecursionError报错。

解决方案

方案1:补充递归终止条件

阶乘的数学定义中0! = 1、1! = 1,只需要补充终止判断即可正常运行:

def factorial(n):
    # 递归终止条件
    if n <= 1:
        return 1
    return n * factorial(n-1)

num = 7
print(factorial(num)) # 运行输出结果为5040

如果需要兼容非法输入场景,可以额外补充参数校验:

def factorial(n):
    if not isinstance(n, int) or n < 0:
        raise ValueError("阶乘仅支持计算非负整数")
    if n <= 1:
        return 1
    return n * factorial(n-1)

方案2:改用非递归实现(规避递归深度限制)

如果需要计算数值较大的阶乘,避免触发递归深度限制,可以改用循环实现:

def factorial(n):
    res = 1
    for i in range(2, n+1):
        res *= i
    return res

num = 7
print(factorial(num))

内容的提问来源于stack exchange,提问作者Lalit rathore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 01:24:03