Dein Fehler ist, dass du denkst, dass nur die letzten zwei aufrufe der Funktion einen Wert zurückgeben, welche addiert und an die printfunktion übergeben werden.
Tatsächlich gibt aber die Funktion den Wert an die Funktion wieder von der sie aufgerufen wurde.
Ich gehs mal mit Aufruf 4 durch ( 6 ist mir zu viel zum schreiben)
fib(4)
fib(4-1) + fib(4-2) [ diese beiden wurden von fib(4) aufgerufen ]
fib(3-1) + fib(3-2) [ diese beiden wurden von fib(4-1) aufgerufen ]
[ fib(4-2) ruft keine Funktion auf sondern gibt den Wert 1 zurück da value<=2 ist ]
[ fib(3-1) ruft keine Funktion auf sondern gibt den Wert 1 zurück da value<=2 ist ]
[ fib(3-2) ruft keine Funktion auf sondern gibt den Wert 1 zurück da value<=2 ist ]
[ da fib(3-1) und fib(3-2) jeweils den Wert 1 an fib(4-1) zurückgeben werden diese in
fib(4-2) aufaddiert zu 2 und dieser Wert zurückgegeben )
[ somit gibt fib(4-2) den Wert 2 an fib(4) zurück und fib(4-2) gibt den Wert 1 an fib(4)
zurück. beide Werte werden in fib(4) aufaddiert zu 3 und zurückgeben an die
printfunktion. ]
[ print erhält den Wert 3 und gibt diesen auf ]
So in etwa sollte das ganze aussehen.
|