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

Python递归实现阶乘功能输入3后运行结果不符合预期问题咨询

问题原因

  • 递归分支未返回结果:当满足num !=k的分支逻辑时,你仅调用了factorial(num-1),没有将递归调用的结果向外返回,导致除了最内层终止条件分支外,外层所有递归调用的返回值都是None,无法拿到正确计算结果。
  • 全局变量使用不合理:你用全局变量a存储计算结果,单次调用没问题,但多次调用函数时a不会自动重置为初始值1,会导致后续计算结果完全错误。
  • 缺少结果输出逻辑:代码最后仅调用了factorial函数,没有打印返回值,非交互式运行环境不会自动输出函数返回值,无法查看结果。
  • 终止条件存在冗余:阶乘定义中0! = 1、1! = 1,现有终止条件到num=0才返回,会多执行一次无意义的a = a*1运算,虽然不影响结果但逻辑不严谨。

修复方案

最小改动版本(保留原代码逻辑框架)

a=1
k=0
def factorial(num):
    global a
    if num !=k:
        a=a*num
        # 新增return传递递归结果
        return factorial(num-1)
    else:
        res = a
        # 重置全局变量,避免多次调用出错
        a = 1
        return res

# 新增print输出结果
print(factorial(int(input())))

规范递归实现版本(无需全局变量,逻辑更简洁)

def factorial(num):
    # 阶乘终止条件:0和1的阶乘都是1
    if num <= 1:
        return 1
    # 递归公式:n! = n * (n-1)!
    return num * factorial(num - 1)

print(factorial(int(input())))

内容的提问来源于stack exchange,提问作者YI Chen Wang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:48:05