Verständnis von Rekursion u.a. in Java?
Ich habe eine Logikfrage beim Thema Rekursion, was ich noch nicht verstanden habe.
Wenn man jetzt z.B. diesen Code mit 4 ausführt:
static long fakul(long n) { if (n==0) return 1; else return n * fakul(n-1);}
Wie kommt man dann auf das Ergebnis 24, weil eigentlich wird die Methode doch so lange aufgerufen bis zum Rekursionsanker 1, sodass doch eigentlich bei jeder Zahl 1 zurückgegeben wird da n ja solange verkleinert wird bis es 1 ist? Wo liegt bei der Überlegung mein Denkfehler, weil sonst würde Rekursion ja nicht funktionieren?
1 Antwort
fakul(4) = 4 * fakul(3) da 4≠1
fakul(3) = 3* fakul(2) da 3≠1
fakul(2) = 2*fakul(1) da 2≠1
fakul(1) = 1, da 1 = 1
Wenn du somit die Ergebnisse von unten nach oben einsetzt, erhälst du 4*3*2*1 = 24
Deine Anweisung lautet ja "return n * fakul(n-1)"
Für den Fall n= 4 bedeutet das also, dass es fakul(3) berechnet und das Ergebnis mit 4 multipliziert.
Also ja
Also setzt die Methode dann alle Schritte bis 1 = 1 zusammen und returnt dann 24 ?