Frage zu Rekursion
-
nein ich kann fak(2) nicht beenden, da ja jetzt durch fak(1) (also, 2*fak(1)) wieder ein 2 entstanden ist welche mir ja nochmal fak(1) aufruft, oder?
-
Steht da eine 2 oder steht da fak(2)?
-
3*fak(2) -> 2*fak(1) -> 1
3*2*1 = 6;
-
wo soll das stehen? neben dem pfeil?
-
was is na aber dann der rückgabewert 3*fak(2) an die eigentlich aufrufende Funktion fak(3)? ist das diese 6?
-
fak(3) gibt 3 * fak(2) zurück. Also 3 * 2 und das ist (oh Wunder) 6
-
Hm, ok!
Aber so richtig einleuchten (wie z.B. grad bei den Fibonaccis) tuts mir nicht...
-
Was müsste ich denn nun bei den zwei Fragezeichen hinschreiben?
-
fak(3) = 3 * fak(2) fak(2) = 2 * fak(1) fak(1) = 1 // per Definition. fak(2) = 2 * 1 fak(2) = 2 fak(3) = 3 * 2 fak(3) = 6
-
Danke, jetzt ist es mir klar. Ich hab mich gerade immer wieder einfach zu sehr auf das Fibonaccie Beispiel zurückerinnert und dabei vergessen, dass Fib(3) ja aus zwei Rückgabewerten zusammenaddiert wurde. Bei der Fakultät aber keine Addition dabei ist, sondern einfach fak(3) dem letzen Rückgabewert von 3*fak(2) entspricht.