Wie funktioniert die rekursion in java?
Warum kommt denn hier 120 heraus? Nach allem was ich gelernt habe sollte wort nur 20 herauskommen...

3 Antworten
Also, mal ganz langsam:
z = fakultät(5)
5 ist ungleich 1, also ergibt sich:
z = fakultät(5-1) * 5
5 - 1 = 4 ist ungleich 1, also ergibt sich:
z = fakultät(4-1) * 4 * 5
4 - 1 = 3 ist ungleich 1, also ergibt sich:
z = fakultät(3-1) * 3 * 4 * 5
3 - 1 = 2 ist ungleich 1, also ergibt sich:
z = fakultät(2-1) * 2 * 3 * 4 * 5
2 - 1 = 1 ist gleich 1, also ergibt sich:
z = 1 * 2 * 3 * 4 * 5 = 120
Es kommt somit 120 als Rückgabewert beim Parameter 5 für die Fakultätsmethode heraus.
Ja, rekursive Lösungen sind für Anfänger oftmals komplexer zu verstehen oder zu formulieren als iterative. Dennoch sind sie aus mathematischer Sicht i.d.R. naheliegender, auch wenn die iterative Lösung meistens effizienter ist.
Wenn du es mal "manuell" im Kopf nachrechnest, wirst du feststellen, wieso
fakultät(5) = fakultät(4)*5
fakultät(4)*5 = fakultät(3)*4*5
fakultät(3)*4*5 = fakultät(2)*3*4*5
fakultät(2)*3*4*5 = fakultät(1)*2*3*4*5
fakultät(1)*2*3*4*5 = 1*2*3*4*5 = 120
Die Rekursion funktioniert so wie in jeder anderen Sprache udn wie jede andere Rekusion auch.
Das Ergebnis ist 5*4*3*2*1=120
Nein, denn:
f(5), x!= 1, Also 5*f(4)
f(4), x!=1,also 4*f(3)
usw. usf.
Ergo: f(5)=5*f(4)=5*4*f(3)=5*4*3*f(2)=5*4*3*2*f(1)=5*4*3*2*1
Wieso soll die denn aufhören? Die ruft sich so lange wieder auf, bis man bei x == 1 ankommt und dann als Rückgabewert eine 1 zurückgibt, die nächsthöhere Instanz macht dann 1 * 2 und gibt das an die eins höhere Instanz weiter, die dann 1 * 2 * 3 an die nächste weitergibt, bis man bei 5 ist, die dann 1 * 2 * 3 * 4 * 5 = 120 ausrechnet
Habe es denke ich verstanden aber das ist ja echt nicht auf anhieb zu verstehen als anfänger