以递归方式获取嵌套列表的总和

时间:2017-02-28 05:39:41

标签: python recursion

def rsum(L):
    if len(L) == 1:
        result = L[0]
    elif type(L[0]) == type([]):
        if len(L[0]) == 0:
            result = []
        else:
            current = [L[0][0]]
            rest = L[0][1:]
            result = rsum(current) + rsum(rest) + rsum(L[1:])
    else:
        result = L[0] + rsum(L[1:])
    return result


print(rsum([1,2,[3,4],5]))

这是我的尝试。如果列表非常简单,这将起作用:

print(rsum([1,2,[3,4],5])) -> 15

但复杂的是这样的:[[1],[2,[3]],[]]失败

我只是想知道这是否可以通过减1战略来做到这一点?我已经被困了一段时间了。

不允许循环

1 个答案:

答案 0 :(得分:5)

def rsum(L):
    if type(L) != list:
        return L
    if L == []:
        return 0
    return rsum(L[0]) + rsum(L[1:])