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

Python实现数字根递归函数时返回None的问题求解

问题诊断与修复方案

错误原因

你编写的代码核心问题出在递归调用的逻辑上:当sum1 > 9时,你仅执行了uno(sum1)递归调用,但没有将该调用的返回值向上传递给上层函数调用。Python中如果函数执行完所有逻辑没有显式写return语句,默认会返回None,因此你最外层调用uno(12345)进入else分支后,没有拿到递归返回的最终结果,最终变量result就被赋值为None。

修复代码

仅需要修改else分支的递归调用行,添加return关键字即可:

def uno(num):
    temp=str(num)
    sum1=0
    for x in temp:
        sum1=sum1+int(x)
    print(sum1)
    if sum1<=9:
        return sum1
    else:
        # 新增return,将递归计算的结果返回给上层
        return uno(sum1)

result=uno(12345)
print(result)

修改后运行输出为:

15
6
6

和预期结果一致。

拓展补充

数字根有现成的数学计算公式,无需递归/循环遍历数位,计算效率更高:

  • 若输入数字为0,数字根为0
  • 若输入数字模9等于0且不为0,数字根为9
  • 其余情况数字根为输入数字模9的结果
    代码实现参考:
def digital_root(num):
    if num == 0:
        return 0
    return 9 if num %9 ==0 else num%9

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:54:03