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

VS Code中调用Python递归阶乘函数报TypeError如何解决

错误产生原因

核心问题是递归函数缺少返回值语句:

  • Python默认规则:如果函数内部没有显式写return返回计算结果,函数执行结束后会默认返回None(空值),也就是报错信息里提到的NoneType类型。
  • 你写的递归终止分支(n<=1的判断逻辑)里,只做了变量赋值和结果打印操作,没有把算出来的数值返回给上层调用。
  • 当递归执行到factorial(1)时,上层调用拿到的返回值就是None,回到上一层计算2 * factorial(1)时,就变成了整数(int类型)和空值做乘法,Python不支持这两种类型的乘法运算,直接抛出对应的类型错误。
修复方法

不需要改动原有的打印逻辑,只需要在两个分支算出结果后,加return语句把计算值返回给上层调用即可,修复后的可运行代码如下:

def factorial(n):
    if n<=1:
        return_value=1
        print(return_value)
        return return_value
    else:
        return_value=n*(factorial(n-1))
        print(return_value)
        return return_value
        
factorial(10)

运行后会逐层打印1到10的阶乘结果,最终输出10的阶乘值3628800,不会再触发类型错误。

内容的提问来源于stack exchange,提问作者DR.MAZIAR

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 19:12:43