如何使用递归添加嵌套数字列表的总和?我将如何使用迭代来做到这一点?

问题描述 投票:0回答:1

我需要编写两个函数来查找嵌套数字列表的总和,一个使用迭代,一个使用递归。

我已经编写了两个函数,可以成功找到非嵌套数字列表的总和,但我不确定如何使它们遍历嵌套列表。

这是我到目前为止所拥有的:

def iterative_sum(ls:list):
    max = len(ls)
    i = 0
    num_sum = 0
    while i < max:
        
            num_sum += ls[i]
            i += 1
    return num_sum

def recursive_sum(ls:list):
    if len(ls)==0:
        return 0
    else:
        return ls[0] + recursive_sum(ls[1:])

num_list = [1, 5, 4, 3, 2, 10, 5]

print("Iterative sum:", iterative_sum(num_list))

print ("Recursive sum:", recursive_sum(num_list))

它对于非嵌套列表非常有用,但如果我的列表也像这样,我需要它才能工作:

num_list = [1, 2, [3, 4], [5, [[6, 7], 8]], 9]

python python-3.x nested-lists
1个回答
0
投票

以下内容适用于任意嵌套列表:

def iterative_sum(ls):
    s = 0
    while ls:
        last = ls.pop()
        if isinstance(last, int):
            s += last
        else:
            ls.extend(last)
    return s

>>> iterative_sum([1, 2, [3, 4], [5, [[6, 7], 8]], 9])
45

def recursive_sum(ls):
    if isinstance(ls, int):
        return ls
    return sum(map(recursive_sum, ls))

>>> recursive_sum([1, 2, [3, 4], [5, [[6, 7], 8]], 9])
45
© www.soinside.com 2019 - 2024. All rights reserved.