i

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.

  1. Nenne Unterschiede im Vergleich zu anderen Funktionen, die du bereits kennst.
  2. Nenne Unterschiede zwischen der rekursiven und iterativen Lösung von sum_list. Wie unterscheidet sich die Vorgehensweise der beiden Funktionen?

Suche

v
100.141.1.1.4 Erkundung Rekursive Funktionen
Kopieren durch Anklicken

Rückmeldung geben