Einzelnen Beitrag anzeigen
Ungelesen 28.09.13, 22:23   #8
Zerafir
Anfänger
 
Registriert seit: Jul 2009
Beiträge: 28
Bedankt: 20
Zerafir ist noch neu hier! | 0 Respekt Punkte
Standard

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.
Zerafir ist offline   Mit Zitat antworten