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

Python递归求和报错TypeError: int与NoneType无法相加的原因咨询

为什么这段递归求和代码会抛出TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'?

错误根源

你的递归函数sum1在n≠0的分支里只计算了n + sum1(n-1),但没有用return返回这个计算结果。在Python中,任何函数如果没有显式的return语句,执行完毕后都会默认返回None。

错误触发的递归逻辑

以调用sum1(5)为例,错误会在递归到低层时触发:

  • 当执行sum1(1)时,会计算1 + sum1(0),而sum1(0)符合n==0的条件,返回整数0。
  • 但sum1(1)没有把1+0的结果返回,而是默认返回None。
  • 当sum1(2)执行2 + sum1(1)时,就变成了2 + None,这直接触发类型错误——整数和NoneType无法执行加法操作。

修正后的代码

只需要在递归分支加上return,让函数返回计算结果即可:

def sum1(n):
    if n == 0:
        return 0
    return n + sum1(n-1)

print(sum1(5))  # 输出15,正确计算前5个自然数的和

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 05:40:31