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

如何实现嵌套数字列表的迭代求和与递归求和函数?

嵌套数字列表的求和实现(迭代+递归)

要处理嵌套列表的求和,核心是判断每个元素的类型:如果是数字就累加,如果是列表就进入该子列表继续处理。以下是针对你现有代码的修改方案:

迭代版本修改

迭代方式需要借助栈来处理嵌套结构,遇到子列表时将其元素重新加入待处理序列,确保所有层级的数字都被遍历到:

def iterative_sum(ls: list):
    num_sum = 0
    # 用栈存储待处理的元素,初始传入原列表
    stack = list(ls)
    while stack:
        element = stack.pop()
        if isinstance(element, list):
            # 如果是列表,把元素倒序压入栈(保证遍历顺序和原列表一致)
            stack.extend(reversed(element))
        else:
            num_sum += element
    return num_sum

递归版本修改

递归的核心是对元素类型做分支处理:如果当前元素是列表,就递归计算该子列表的和;如果是数字,直接累加:

def recursive_sum(ls: list):
    if not ls:
        return 0
    first = ls[0]
    # 判断第一个元素是否为列表,是则递归计算子列表的和
    if isinstance(first, list):
        return recursive_sum(first) + recursive_sum(ls[1:])
    else:
        return first + recursive_sum(ls[1:])

测试验证

用你提供的嵌套列表测试:

num_list = [1, 2, [3, 4], [5, [[6, 7], 8]], 9]
print("Iterative sum:", iterative_sum(num_list))  # 输出:45
print("Recursive sum:", recursive_sum(num_list))  # 输出:45

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:16:07