myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

Perl Rekursion "Fibonnacci"

Willkommen

myGully

Links

Forum

 
Antwort
 
Themen-Optionen Ansicht
Ungelesen 28.09.13, 22:03   #1
savasabi
Anfänger
 
Registriert seit: Sep 2012
Beiträge: 8
Bedankt: 2
savasabi ist noch neu hier! | 0 Respekt Punkte
Standard

also wenn ich es so durch gehe schreibe ich folgendes auf

Zum Beispiel für den Schleifendurchlauf mit 6 es ruft sich doch immer wieder selber auf und $value wird immer niedriger vom Wert:

fibonacci(6-1) + fibonacci(6-2)
fibonnacci(5) + fibonacci(4)

fibonacci(5-1) + fibonacci(4-1)
fibonacci(4) + fibonacci(3)

fibonacci(4-1) + fibonacci(3-1)
fibonacci(3) + fibonacci(2)

fibonnacci(3-1) + fibonnacci(2)= 1
fibonnacci(2)=1 + 1
= 2

Nach meinem Verständnis kann doch immer nur 2 ausgegeben werden? Wo habe ich den Denkfehler?
savasabi ist offline   Mit Zitat antworten
Ungelesen 28.09.13, 22:23   #2
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
Ungelesen 28.09.13, 22:26   #3
NetWebs
Banned
 
Registriert seit: Aug 2012
Beiträge: 223
Bedankt: 68
NetWebs ist noch neu hier! | 0 Respekt Punkte
Standard

Nimm mal wirklich Stift und Papier in die Hand und rechne Zeile für Zeile!
Entweder warst du faul oder extrem unkonzentriert und kommst daher auf die total falsche Lösung.

Also: Konzentrier dich, schreib auf...dann findest Du auch die Lösung!
NetWebs ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:11 Uhr.


Sitemap

().