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

Python count函数迭代调用传值≤10时无返回值问题

问题原因

你的递归函数在num <= 10的分支中,仅调用了内层的count(new),但没有将内层调用的返回值向外传递。Python中函数如果没有显式声明return语句,默认返回值为None,这就是你调用count(8)拿不到预期结果的核心原因。
传入22时会直接命中第一个num > 10的判断分支,直接执行return逻辑,所以能正常拿到返回值22;但传入8时,函数会逐层递归调用count(9)、count(10)、count(11),最内层的count(11)确实计算出了结果11,但外层的count(10)、count(9)、count(8)都没有接收这个返回值再向外返回,最终赋值给nummer的就只有默认的None。

修复方法

在递归调用count(new)前补充return关键字,把内层递归的返回值逐层透传到最外层即可,修复后的代码:

def count(num):
    if num > 10:
        return num
    if num <= 10:
        new = num + 1
        return count(new)

nummer = count(8)

修复后执行count(8)就能得到预期的返回值11,执行链路为:

  • count(8)返回count(9)的执行结果
  • count(9)返回count(10)的执行结果
  • count(10)返回count(11)的执行结果
  • count(11)命中num>10分支返回11,结果逐层向外传递,最终得到正确值

小提示:两个if的判断条件是完全互斥的,第二个判断可以直接替换为else,代码逻辑会更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 18:27:34