Methoden Fibunacci Iterativ

Hallo Ich habe mir letztens mal vorgenommen ein bisschen vorzuarbeiten für die Schule.. Als ich bei einem gewissen Zeitpunkt nicht mehr weiterkam habe ich im Internet eine Lösung zu meinem Problem gefunden. Das Problem war die Lösung der Fibunacci Zahlen auf iterativem Wege.. Ich habe mal den Quelltext angehangen. unklar wirds ab der while schleife mit int a = aa und so. Kann mir das jemand erklären?


Java:
public int iterativ(int pZahl)
{   
    if(pZahl<=0) // fuer negative Zahl auch 0!
        return 0;
    else if (pZahl==1)
        return 1;
    else
    {
        int a=0; // hat am Anfang der Schleife den Wert Fibunacci(i-2)
        int b=1; // hat am Anfang der Schleife den Wert Fibunacci(i-1)
        int i=2;
        
        while(i<=pZahl) //Schleife für alle Werte von 2 bis n
        {
            int aa=b; // Wert für Fib (i-1)
            int bb=a+b; // Wert für Fib(i)
            a=aa; //Für den nächsten Durchgang
            b=bb; //Für den nächsten Durchgang
            i++;
            
        }
    return b;
}
 

eMmiE

Bekanntes Mitglied
Also:
b ist immer die Zahl, bei der du gerade bist
i gibt an, bei der wievielten Zahl du bist
1.: 0
2.: 1
3.: 1
4.: 2...

Um die nächste Zahl zu errechnen brauchst du die Zahl, die eins vor der aktuellen Zahl ist

Schleife:
1. prgr setzt aa auf den Wert, der gerade dran ist
2. prgr setzt bb auf den Wert der nächsten Zahl
3. prgr setzt a auf die Zahl der aktuellen Zahl
4. prgr setzt b auf die Zahl, welche im nächsten Durchgang die aktuelle Zahl ist
5. er erhöht i um 1

Im Verlauf:
1. Durchgang
aa = 1 //letzte Zahl
bb = 0 + 1 = 1 //aktuelle Zahl = Summe der letzten Zahl und der Zahl der vorletzten Runde
a = 1 //Setzt a auf die letzte Zahl
b = 1 //Setzt b auf die aktuelle Zahl
i = 3 //Gibt an, dass die dritte Fibonacci-Zahl erreicht wurde

2. Durchgang
aa = 1 //letzte
bb = 1 + 1 = 2 //aktuelle Zahl
a = 1 //letzte
b = 2 //aktuelle Zahl
i = 4

3. Durchgang
aa = 2 //letzte Zahl
bb = 2 + 1 = 3 //aktuelle Zahl
a = 2 //letzte
b = 3 //aktuelle
i = 5
...

Und wenn jetzt i == pZahl ist, dann fängt er keine neue Schleife an, sondern gibt die aktuelle Zahl aus

Gruß eMmiE
 

stg

Top Contributor
Nur am Rande: Die erste Zuweisung int aa = b ist doch ziemlich sinnfrei. Wieso nicht einfach:

Java:
 while(i<=pZahl) //Schleife für alle Werte von 2 bis n
{
int bb=a+b; // Wert für Fib(i)
a=b; //Für den nächsten Durchgang
b=bb; //Für den nächsten Durchgang
i++;
 
}
 

stg

Top Contributor
Ne das geht nicht weil er dann immer mit 0 für a rechnen würde oder so ähnlich

Doch, das geht. Die Zeile ist für die Katz' ... Probier es doch einfach mal aus, dann wirst du's schon sehen... :)

Zuerst weist du aa den Wert von b zu, später dann weist du a den Wert von aa zu. In der Zwischenzeit änderst du aber weder den Wert von aa noch den Wert von b. Daher kannst du genauso gut, wie in meinem Code-Schnipsel zu sehen, die erste Zuweisung weglassen und dafür a direkt den Wert von b zuweisen.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
wuerg Türme von Hanoi Iterativ Java Basics - Anfänger-Themen 8
jhCDtGVjcZGcfzug Fibonacci Zahlen rekursiv und iterativ Java Basics - Anfänger-Themen 21
R Iterativ zeichnen Java Basics - Anfänger-Themen 1
G Primzahlen von Rekursiv nach Iterativ Java Basics - Anfänger-Themen 6
F Alle Zeichenkombinationen eines Strings iterativ herausfinden Java Basics - Anfänger-Themen 26
F Iterativ in Rekursiv Java Basics - Anfänger-Themen 2
I MergeSort iterativ mit Stacks Java Basics - Anfänger-Themen 13
A Rekursion Funktion in eine Iterativ Funktion umwandeln Java Basics - Anfänger-Themen 9
M Werte der Knoten in Binärbaum addieren (iterativ) Java Basics - Anfänger-Themen 6
E Binärbaum - von rekursiv zu iterativ Java Basics - Anfänger-Themen 10
S java rekursiv iterativ hilfee :s Java Basics - Anfänger-Themen 5
H Suchbaum iterativ absteigen? Java Basics - Anfänger-Themen 3
P Hanoi rekursiv zu iterativ umbauen Java Basics - Anfänger-Themen 20
W Binomialkoeffizient iterativ/rekursiv Java Basics - Anfänger-Themen 2
P QuickSort iterativ Java Basics - Anfänger-Themen 5
M Rekursion Iterativ ausdrücken Java Basics - Anfänger-Themen 3
B Begriff Iterativ Java Basics - Anfänger-Themen 2
J Java Rekursiv vs(zu) Iterativ Hilfe Java Basics - Anfänger-Themen 3
F Sortieralgorithmus von rekursiv auf iterativ? Java Basics - Anfänger-Themen 21
N Fibo Zahlen:iterativ,rekursiv Anzahl der Additionen zählen Java Basics - Anfänger-Themen 2
X Türme von Hanoi - Iterativ Java Basics - Anfänger-Themen 8
T funktion iterativ Java Basics - Anfänger-Themen 4
I Iterativ <-> Rekursiv in Java Java Basics - Anfänger-Themen 11
B von rekursiv zu iterativ Java Basics - Anfänger-Themen 6
F MergeSort iterativ mit Hilfe von Stack Java Basics - Anfänger-Themen 5

Ähnliche Java Themen


Oben