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

Ali*_*i89 1 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]))
Run Code Online (Sandbox Code Playgroud)

这是我的尝试.如果列表非常简单,这将工作:

print(rsum([1,2,[3,4],5])) -> 15
Run Code Online (Sandbox Code Playgroud)

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

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

不允许循环

avy*_*ysk 5

def rsum(L):
    if type(L) != list:
        return L
    if L == []:
        return 0
    return rsum(L[0]) + rsum(L[1:])
Run Code Online (Sandbox Code Playgroud)