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

Python递归阶乘代码问题:return无输出、print报错原因咨询

递归阶乘代码的两个问题解析

第一个问题:使用return实现但无输出结果

你这段代码的逻辑完全是对的,factorial(3)确实能算出结果6,但你只是调用了函数,却没把返回的结果打印出来呀!

程序显示Process finished with exit code 0,说明代码没报错、正常跑完了,但控制台不会自动输出函数的返回值——你得明确告诉程序要把结果打出来。

修正方法超简单,把调用语句改成这样就行:

print(factorial(3))

这下就能看到预期的6了。

第二个问题:改用print实现后报错TypeError

这个报错的核心问题是:递归函数的各个分支没有统一返回值。

当n == 0时,你只执行了print("1"),但函数没返回任何值,所以factorial(0)的返回值是Python默认的None。

等计算factorial(1)时,recurse = factorial(0)就会拿到None,接下来执行1 * recurse就是1 * None,这显然不符合整数乘法的规则,所以直接抛出了TypeError。

如果想用print输出每一步的结果,同时保证递归逻辑正常,得在每个分支都返回计算值:

def factorial(n):
    if n == 0:
        print(1)
        return 1
    else:
        recurse = factorial(n - 1)
        result = n * recurse
        print(result)
        return result

factorial(3)

这样运行后会依次输出1、2、6,也不会再报错啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:29:31