single
Rekursion
Swipe um das Menü anzuzeigen
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
123456def 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:
times = 3→ Bedingung ist erfüllt, Nachricht wird ausgegeben, Aufruf vonprint_message(message, 2);times = 2→ Bedingung ist erfüllt, Nachricht wird ausgegeben, Aufruf vonprint_message(message, 1);times = 1→ Bedingung ist erfüllt, Nachricht wird ausgegeben, Aufruf vonprint_message(message, 0);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.
Jede rekursive Funktion muss einen Basisfall haben. Ohne diesen ruft sich die Funktion unendlich oft selbst auf und verursacht einen RecursionError.
Wischen, um mit dem Codieren zu beginnen
Implementieren einer rekursiven Funktion list_sum, die die Summe aller Elemente in einer Liste berechnet.
- Wenn die Liste
numbersleer ist, Rückgabe von0— dies ist der Basisfall; - Andernfalls Rückgabe des ersten Elements addiert zum Ergebnis eines rekursiven Aufrufs mit dem Rest der Liste.
Lösung
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen