Erkundung Rekursive Funktionen
Nachdem wir nun wissen, was die grundsätzliche Idee von Rekursion ist, wollen wir uns nun rekursive Funktionen anschauen. Wir betrachten erneut das Problem sum_list von vorher und schauen uns zunächst mal die iterative Lösung an:
Eine iterative Lösung, die mit einer Schleife über die Listenelemente iteriert und sie Element für Element aufsummiert, könnte folgendermaßen aussehen:
def sum_list(liste):
  summe = 0
  for element in liste:
    summe += element
  return summe
Wir definieren also eine Variable summe, initialisieren sie mit 0 und addieren dann in der Schleife jedes Element auf die Variable. Wenn wir über alle Elemente gelaufen sind, geben wir die Summe zurück.
Aufgabe 4
Im folgenden Fenster findest du eine rekursive Version von 
sum_list. Spiel ein wenig mit der Funktionsdefinition herum und teste verschiedene Eingaben. Was passiert zum Beispiel, wenn du in Zeile 3 die 0 in eine 1 änderst? Führe die Beispielaufrufe durch einen Klick auf den Button rechts aus.
def sum_list(liste):
  if len(liste) == 0:
    return 0
  else:
    return liste[0] + sum_list(liste[1:])
print(sum_list([1, 2, 3, 4, 5]))
print(sum_list([4711]))
print(sum_list([]))
#print(sum_list(_dein_Beispiel_hier_))
 Hinweis: bei der Funktion wird Slicing verwendet. Damit können wir eine Liste aufteilen bzw. auf eine Teilliste zugreifen. 
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
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?
