2017-01-05 3 views
0

Ich bin ein Anfänger und ich weiß nicht, wie das geht.Verwenden von Rekursion, um alle Elemente einer Liste zusammenzufassen

Ich habe eine Liste L=[1,2,3,100] und Rekursion verwenden, sollte ich [0,1,2,3,4,6,...,106] alle Möglichkeiten bekommen, um diese Elemente aus L zusammenzufassen wie nur L[1] und L[2] oder L[0] und L[1], L[0] und L[1] und L[3], etc ... Ich versuche das, aber es ist keine Rekursion, oder?

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

Dies scheint wie Hausaufgaben, stellen Sie sicher, dass Sie verstehen, was Rekursion ist. Wenn Sie Ihr gewünschtes Ergebnis nicht erhalten, sollte es auch hier gepostet werden, sowie was Sie von Ihrem eigenen Code verstehen. Dies hilft den Menschen, Antworten auf Ihr Wissen zu geben. Viel Glück! – Llopis

Antwort

0

Ihre Kennungen stimmen nicht überein. Fix, dass zuerst:

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

Zweite bei jeder Rekursion Ebene, müssen Sie zwei Augmentationen tun: man jeweils mit und ohne das erste Element. Etwas wie ...

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

return result 

Können Sie es von dort nehmen? Falls nicht, suchen Sie Stack Overflow nach Fragen zu "Rekursionssumme zum Ziel". Es wird viele Lösungen geben sehr in der Nähe, was Sie für dieses Problem benötigen.

Verwandte Themen