Erkundung Rekursive Funktionen
Aufgabe 4
Spiele etwas mit der Definition der Funktion herum. Ändere zum Beispiel den Rückgabewert in Zeile 3 auf return 1
und werte das Diagramm aus. Was hat sich im Vergleich zu vorher verändert? Teste dann, was sich verändert, wenn du Zeile 5 in return sum_list(l[1:]) + l[0]
änderst.
liste[i:j]
beschreibt dabei die Liste bestehend aus allen Elementen von Index i
bis Index j-1
. Wenn i weggelassen wird, ist das als hätte man 0 geschrieben. Wenn j weggelassen wird, ist das als hätte man die Länge der Liste geschrieben. Für mehr Informationen zu Slicing siehe Kapitel 6.3.2.14.2
Das Problem, alle Elemente einer Liste aufzusummieren, kann man nicht nur rekursiv, sondern auch iterativ, also mit einer Schleife, lösen. Die iterative Lösung sieht wie folgt aus:
def sum_list (l):
sum = 0
for element in l:
sum += element
return sum
Sowohl iterative als auch rekursive Lösungen haben ihre Vor- und Nachteile. Die rekursive Lösung ist oft kürzer und eleganter. Ob man ein Problem rekursiv oder iterativ löst, hängt von der jeweiligen Situation ab. Manchmal ist die rekursive Lösung einfacher zu verstehen und zu implementieren, manchmal ist die iterative Lösung effizienter.
Aufgabe 5
Schau dir die Funktion aus Aufgabe 4 noch einmal genauer an.
- Nenne Unterschiede im Vergleich zu anderen Funktionen, die du bereits kennst.
- Nenne Unterschiede zwischen der rekursiven und iterativen Lösung von
sum_list
. Wie unterscheidet sich die Vorgehensweise der beiden Funktionen?