Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Rekursion | Rekursion und Lambda-Funktionen
Python-Funktionen-Tutorial
Abschnitt 5. Kapitel 1
single

single

Rekursion

Swipe um das Menü anzuzeigen

Note
Definition

Eine rekursive Funktion ist eine Funktion, die sich selbst aufruft, um ein Problem zu lösen, indem sie es in kleinere, einfachere Teile zerlegt.

Die Schlüsselelemente der Rekursion sind:

  • Basisfall: die Bedingung, die die Rekursion stoppt;
  • Rekursiver Fall: der Teil, in dem die Funktion sich selbst mit einer einfacheren Eingabe aufruft.

Warum Rekursion verwenden?

Einige Probleme lassen sich auf natürliche Weise in kleinere Teilprobleme zerlegen. Rekursion bietet eine übersichtliche und elegante Möglichkeit, diese zu lösen, indem eine Funktion sich selbst aufruft, um die einfacheren Fälle zu bearbeiten. Sie wird häufig bei Aufgaben wie der Verarbeitung von Bäumen, der Erkundung von Pfaden oder dem Zerlegen von Strukturen (z. B. Listen, Zeichenketten) verwendet.

Ein einfaches Beispiel

123456
def print_message(message, times): if times > 0: # Base case: stop when times is 0 print(message) print_message(message, times - 1) # Recursive case print_message("Hello, Recursion!", 3)

Schrittweise Erklärung, wie dies funktioniert:

  1. times = 3 → Bedingung ist erfüllt, Nachricht wird ausgegeben, Aufruf von print_message(message, 2);
  2. times = 2 → Bedingung ist erfüllt, Nachricht wird ausgegeben, Aufruf von print_message(message, 1);
  3. times = 1 → Bedingung ist erfüllt, Nachricht wird ausgegeben, Aufruf von print_message(message, 0);
  4. times = 0 → Bedingung ist nicht erfüllt, Rekursion endet.

Ergebnis: Die Nachricht wird dreimal ausgegeben.

Der Aufruf-Stack

Jedes Mal, wenn die Funktion sich selbst aufruft, wird ein neuer Frame zum Aufruf-Stack hinzugefügt – eine Speicherstruktur, die aktive Funktionsaufrufe verfolgt. Sobald der Basisfall erreicht ist, wird jeder vorherige Aufruf nacheinander in umgekehrter Reihenfolge abgeschlossen.

Note
Hinweis

Jede rekursive Funktion muss einen Basisfall haben. Ohne diesen ruft sich die Funktion unendlich oft selbst auf und verursacht einen RecursionError.

Aufgabe

Wischen, um mit dem Codieren zu beginnen

Implementieren einer rekursiven Funktion list_sum, die die Summe aller Elemente in einer Liste berechnet.

  1. Wenn die Liste numbers leer ist, Rückgabe von 0 — dies ist der Basisfall;
  2. Andernfalls Rückgabe des ersten Elements addiert zum Ergebnis eines rekursiven Aufrufs mit dem Rest der Liste.

Lösung

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 5. Kapitel 1
single

single

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

some-alt