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

Python递归代码报int与NoneType不支持+运算的TypeError原因是什么

报错原因分析

你提供的原始代码如下:

def tri_recursion(k):
    
    if (k > 0):
        result = k + tri_recursion(k - 1)
        print(result)
    else:
        result = 0
        return result
        
tri_recursion(6)

该报错的核心触发逻辑如下:

  • Python 规则中,所有函数都存在返回值,若你没有主动编写return语句,函数执行完所有内部逻辑后会默认返回None。
  • 原始代码里return result仅在else分支中存在,意味着只有当k <= 0时,函数才会返回整数类型的结果;只要k > 0,执行完if分支的计算、打印逻辑后,没有显式的返回语句,函数就会返回None。
  • 递归调用是逐层下探再逐层返回的逻辑:调用tri_recursion(6)时需要先获取tri_recursion(5)的返回值做加法,tri_recursion(5)需要先获取tri_recursion(4)的返回值,直到下探到tri_recursion(0)返回整数0。此时tri_recursion(1)计算得到1+0=1并打印,但tri_recursion(1)属于k>0的分支,没有显式return,最终返回None;上层tri_recursion(2)需要计算2 + tri_recursion(1),也就是整数和None做加法,两种类型不支持加法运算,就触发了对应的TypeError。
  • 你把return result调整到和else同级后,不管走if还是else分支,函数最后都会返回计算得到的整数值result,递归上层做加法时类型匹配,就能正常输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 19:36:10