因此,我在为期末考试练习递归,并尝试创建一个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/