如何实现嵌套数字列表的迭代求和与递归求和函数?
嵌套数字列表的求和实现(迭代+递归)
要处理嵌套列表的求和,核心是判断每个元素的类型:如果是数字就累加,如果是列表就进入该子列表继续处理。以下是针对你现有代码的修改方案:
迭代版本修改
迭代方式需要借助栈来处理嵌套结构,遇到子列表时将其元素重新加入待处理序列,确保所有层级的数字都被遍历到:
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
相关产品推荐
相关产品推荐

