我是初学者,我不知道该怎么做。
我有一个列表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]
答案 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])