编写递归函数加法,返回列表中元素的和。
例如,加法([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

10-08 00:45