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

递归实现嵌套列表求和时末尾子列表未计算的逻辑问题排查

嵌套列表递归求和的Bug修复

错误原因

原代码的核心逻辑漏洞出在子列表的处理分支:

  • 遇到值为列表的元素时,代码直接return了子列表的递归调用结果,子列表计算完成后就直接终止了当前层的遍历流程,不会回到父列表继续处理该子列表之后的元素。
  • 对应测试用例的执行流程:程序遍历完前两个普通元素1、2,累计值为3,接着遇到子列表[3,4],递归进入子列表计算完3+4、累计值到10之后就直接返回结果,外层列表最后一个元素[5,6]完全没有被遍历到,因此输出只有10,和预期值21差了5+6=11。
    另外原代码用Python内置函数名sum作为参数名,属于不规范写法,容易引发意料之外的问题,修正时一并调整。

修正方案

调整子列表分支的逻辑:不要直接返回子列表的递归结果,先拿到子列表的求和值累加到当前总计数,再把当前遍历索引+1,继续遍历当前列表的后续元素即可。

修正后的可运行代码:

lst = [1,2,[3,4],[5,6]]
def findSum(values, total, idx):
    # 遍历到当前列表末尾,返回累计结果
    if len(values) == idx:
        return total
    current = values[idx]
    if isinstance(current, list):
        # 单独递归计算子列表的和,子列表初始累计值从0开始
        sub_sum = findSum(current, 0, 0)
        total += sub_sum
        # 索引后移,继续处理当前列表的下一个元素
        return findSum(values, total, idx + 1)
    else:
        total += current
        return findSum(values, total, idx + 1)

print(findSum(lst, 0, 0))

运行代码会输出预期结果21,该逻辑也支持任意深度的嵌套列表求和。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 05:36:26