因此,我在为期末考试练习递归,并尝试创建一个Deepsum函数,其工作原理如下:

deepsum([1, 2], 3, [4, 6]) => 16


出于某种原因,尽管我一直在跟踪它,这仍然是正确的:

总结:

return L[0] + deepsum(L[1:])
TypeError: can only concatenate list (not "int") to list


码:

def deepsum(L):

if not L:
    return 0

if L[0] == type(L):

    return deepsum(L[0])

else:
    return L[0] + deepsum(L[1:])


请没有循环的答案;仅递归。谢谢!

最佳答案

问题是您使用isinstance检查L[0]类型的方式:

def deepsum(L):
    if not L:
        return 0
    if isinstance(L[0], list):
        return deepsum(L[0]) + deepsum(L[1:])
    else:
        return L[0] + deepsum(L[1:])


result = deepsum([[1, 2], 3, [4, 6]])
print(result)


输出量

16


另外请注意,您必须添加列表其余部分的结果,即deepsum(L[0]) + deepsum(L[1:])

关于python - python deepsum递归遇到麻烦,给出类型错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53603879/

10-08 23:06