Aufgabe:
Könnte mir jemand das Thema Rekursion erklären? Ich komme da einfach nicht so ganz hinter trotz x Tutorials und Beiträge.
Beispiel 1: Fakultät:
def fac(n):
if n == 1:
return 1
else:
return n * fac(n-1)
Wenn ich die Fakultät von 4!
berechnen möchte:
1. Aufruf: Ich lande nicht im Rekursionsanker (if-Abfrage) sondern im Else-Zweig und dann gehts so weiter:
return: 4 * fac(3)
return: 3 * fac(2)
return: 2* fac(1)
Und nun hakts bei mir: Jetzt greift ja der Rekursionsanker if n == 1
. Es wird 1
zurückgegeben (Wohin?) Und was passiert dann? Nun soll ja der Weg "zurückgegangen" werden wenn ich das recht verstanden habe, aber ich verstehe einfach nicht wie und warum.
Und auch wenn es vermutlich mit meinem Wissensstand sinnlos ist, sich gleich ans nächst größere Problem zu setzen:
Wie läuft das in der Fibonacci-Funktion ab? Da werden ja dann auch noch die Funktionen addiert.
def fibn):
if n == 0:
return 0
elif n == 1:
return 1
else:
return fib(n-1) + fib(n-2)
Würde mich freuen, wenn mir das jemand sehr einfach erklären könnte. Ich habe es schon mit dem Debugger versucht nachzuvollziehen, print-statements eingefügt und und und... Irgendwie ist der Groschen noch nicht gefallen.