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

如何递归计算1到n的正整数之和并解决递归深度超出报错?

错误原因分析

  • 递归调用参数错误:你在else分支的返回语句中第一个递归调用的参数仍然是原参数n,没有向终止条件(n=0)收敛,程序会无限调用sumOfDigits(n),永远无法触发终止逻辑,最终触发递归深度超限错误。
  • 冗余循环逻辑:递归本身已经自带迭代逻辑,不需要额外加while n>0的循环,这里的循环没有任何实际作用。

修正后的递归实现

def sumOfDigits(n):
    assert n >= 0 and int(n) == n, 'The number must be positive integer only'
    # 终止条件:n为0时返回0
    if n == 0:
        return 0
    # 递归逻辑:1到n的和 = n + 1到n-1的和
    else:
        return n + sumOfDigits(n-1)

print(sumOfDigits(3))

运行上述代码会输出正确结果6。

额外优化建议

你当前的函数功能是计算1到n的正整数和,函数名sumOfDigits通常用来指代“求数字各位之和”的功能,建议可以重命名为sum_from_one_to_n这类更符合功能的命名,提升代码可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:15:04