首页 > 解决方案 > python deepsum递归遇到问题,会出现类型错误?

问题描述

所以我正在为我的期末考试练习递归,并试图制作一个 deepsum 函数,它的工作原理如下:

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

出于某种原因,我不断收到此错误,尽管在跟踪时它似乎是正确的:

在 deepsum 中:

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:])

请不要有循环的答案;只有递归。谢谢!

标签: python

解决方案


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

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:]).


推荐阅读