编写递归函数加法,返回列表中元素的和。
例如,加法([2,1,3])给出6。
def addElements(s):
if s == []:
return 0
else:
s[0] + addElements(s[1:])
return s
错误:
TypeError: unsupported operand type(s) for +: 'int' and 'list'
得到这个错误,
任何帮助都很好谢谢:)
最佳答案
问题就在这些方面。
s[0] + addElements(s[1:])
return s
找到两个元素的和,忽略它们并返回列表当您简单地返回
s
时,上一个addElements(s[1:])
调用将得到s[1:]
并且您将尝试s[0] + s[1:]
其中,
s[0]
是列表中的第一个元素,s[1:]
是列表的其余部分这就是为什么你会犯这个错误。你应该做的是
return s[0] + addElements(s[1:])
所以,你的递归会变成这样
addElements([2, 1, 3])
||
2 + (addElements([1, 3]))
||
2 + (1 + (addElements([3])))
||
2 + (1 + (3 + (addElements([]))))
||
2 + (1 + (3 + (0)))
||
2 + (1 + (3))
||
2 + (4)
||
6 # Your answer