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
相关产品推荐
相关产品推荐

