Menu
CoddyTech

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:

  1. Der Basisfall gibt an, wann Schluss ist.
  2. 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 Schritt

factorial(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"))
olleh
challenge icon

Aufgabe

Einfach

Schreibe eine rekursive Funktion namens fibonacci, die eine positive ganze Zahl n entgegennimmt und die n-te Fibonacci-Zahl zurückgibt:

  • fibonacci(1) ist 0
  • fibonacci(2) ist 1
  • für n > 2 ist fibonacci(n) gleich fibonacci(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
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablaufsteuerung

Übe selbstständig: Online-GDScript-Compiler