使用递归来总结列表的所有元素

时间:2017-01-05 00:37:56

标签: python-3.x recursion

我是初学者,我不知道该怎么做。

我有一个列表L=[1,2,3,100],并且使用递归,我应该[0,1,2,3,4,6,...,106]所有可能性来概括L中的这些元素,例如L[1]L[2],或{ {1}}和L[0]L[1]L[0]以及L[1]等... 我试试这个,但这不是递归,是吗?

L[3]

2 个答案:

答案 0 :(得分:0)

您的标识符不匹配。首先修复:

def listSum(ls):
   if not ls:
       return 0
   return ls[0] + listSum(ls[1:])

在每个递归级别,你需要做两个扩充:一个有和没有第一个元素。有点像...

other = listSum(ls[1:])
result = []
for partial_sum in other:
    # append both partial_sum and partial_sum + ls[0] to result

return result

你能从那里拿走吗? 如果没有,请搜索Stack Overflow以获取有关“递归总和到目标”的问题。将会有很多解决方案非常接近您解决此问题的方法。

答案 1 :(得分:-1)

可能有帮助

def list_sum(list):

    if len(list)==1:
        return(list[0])
    else:
        return list[-1]+l_sum(list[-2::-1])