Rekursive Funktionen Teil 2
Teil des Abschnitts Logik & Ablaufsteuerung der GDScript-Journey von Coddy. Lektion 58 von 78.
Jede rekursive Funktion hat dieselben zwei Teile:
- Der Basisfall gibt an, wann Schluss ist.
- Der rekursive Schritt ruft die Funktion mit einer kleineren Eingabe auf.
Die Fakultät von n ist n * (n - 1) * ... * 1, also ist die Fakultät von n gleich n mal der Fakultät von n - 1:
func factorial(n: int) -> int:
if n == 1: # Basisfall
return 1
return n * factorial(n - 1) # rekursiver Schrittfactorial(5) ruft factorial(4) auf, das wiederum factorial(3) aufruft, bis hinunter zu factorial(1), das 1 zurückgibt. Auf dem Rückweg multipliziert jeder Aufruf: Das Ergebnis ist 120.
Eine kleinere Eingabe muss keine kleinere Zahl sein. Eine kürzere Zeichenfolge funktioniert auch. Diese Funktion kehrt eine Zeichenfolge um:
func reverse_text(text: String) -> String:
if text.length() <= 1: # Basisfall
return text
return reverse_text(text.substr(1)) + text[0]text.substr(1) ist die Zeichenfolge ohne ihr erstes Zeichen. Die Funktion kehrt diese kürzere Zeichenfolge um und fügt das erste Zeichen am Ende hinzu. Eine Zeichenfolge mit null oder einem Zeichen ist bereits umgekehrt, daher ist sie der Basisfall.
print(reverse_text("hello"))ollehAufgabe
EinfachSchreibe eine rekursive Funktion namens fibonacci, die eine positive ganze Zahl n entgegennimmt und die n-te Fibonacci-Zahl zurückgibt:
fibonacci(1)ist0fibonacci(2)ist1- für
n > 2istfibonacci(n)gleichfibonacci(n - 1) + fibonacci(n - 2)
Zum Beispiel gibt fibonacci(6) den Wert 5 zurück (die Folge beginnt mit 0, 1, 1, 2, 3, 5).
Die Tests rufen fibonacci() selbst auf. Rufe sie nicht auf und gib nichts aus.
Probier es selbst
func fibonacci(n: int):
# Schreibe hier Code
pass
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablaufsteuerung
1Strings im Detail
String-MethodenIn Strings suchenErsetzen und TrimmenAufteilen und ZusammenfügenRückblick – Benutzernamen prüfen4Wörterbücher Teil 2
Verschachtelte WörterbücherArrays aus WörterbüchernWörterbücher zusammenführenWörterbücher kopierenWiederholung – Häufigkeitszähler10Fortgeschrittene Funktionen
Mehrere Werte zurückgebenLambda-Funktionen Teil 1Lambda-Funktionen Teil 2Wiederholung – Sortieren mit LambdaRekursive Funktionen Teil 1Rekursive Funktionen Teil 2Wiederholung – Verschachteltes Array summieren13Inventarverwaltungssystem
ProjektübersichtArtikel hinzufügen2Fortgeschrittene Entscheidungsfindung
Match mit VariablenMatch-GuardsArray-MusterDictionary-MusterMitgliedschaftsprüfungenRückblick – Befehlsparser5Kontaktbuch-Anwendung
Menü anzeigenKontakt hinzufügen8Schülerdatenverwaltung
ProjektübersichtSchüler hinzufügen3Mehrdimensionale Arrays
Grundlagen zu 2D-ArraysAuf Elemente in 2D-Arrays zugreifenVerschachtelte Schleifen mit 2D-ArraysWiederholung – 2D-ArraysGezackte ArraysGängige Muster für 2D-ArraysWiederholung – Spielbrett6Mengen mit Dictionaries
Was ist eine Menge?Dictionary als MengeHinzufügen und EntfernenVereinigung und SchnittmengeMengendifferenzWiederholung – Duplikate entfernen9Fortgeschrittene Datenaggregation
Werte summierenMinimum und Maximum findenBenutzerdefiniertes SortierenRückblick – Wörterbuch-Sortierer12Einfache Fehlerbehandlung
Was ist Fehlerbehandlung?Eingaben validierenGuard ClausesFehlercodes zurückgebenRückblick – Sichere DivisionÜbe selbstständig: Online-GDScript-Compiler