递归 - 对嵌套列表求和

Recursion - summing a nested list

我正在尝试将嵌套列表中的所有数字相加作为递归练习。但是,输出给出 1 而不是所有数字的总和。我哪里错了?

我尝试遍历嵌套列表,如果它是一个列表,那么它会再次调用相同的函数。如果它不是列表,它会将数字添加到总数中。

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

def sumL(input): 
    total = 0 
    for i in input: 
        if type(i) is list:
            total += sumL(i)
        else: 
            total += i
        return total 
    
sumL(L)

您将在 for 循环的第一次迭代中退出。由于 i 等于 1,然后您键入检查它,然后您 += total 并立即 return。你应该 return 退出 for 循环之后。

def sumL(ls):
    total = 0
    for i in ls:
        if isinstance(i, list):
            total += sumL(i)
        else:
            total += i
    return total

注意*不要使用 input 作为参数,因为它是函数的名称