Wer kann mir diese for Schleife in Java Erklären (Fibonacci Zahlen Berechnung)? Siehe Foto?
ich verstehe es nicht. ( Also der Code ist von meinem Lehrer wir haben das Kaninchen Beispiel der Fibonacci Zahlen berechnet). Abe
Aber ich find es ergibt keinen Sinn die for Schleife hat doch nichts mit alt und neu variablen zu tun, da steht ja nämlich i=1 also es wurde eine neue Variable definiert aber was hat das i denn bitte schön mit der neu und alt Berechnung zu tun man hätte die for schleife doch gleich komplett weglassen können da wird nichts erhöht bei der Berechnung oder sonst was Haare ich Checks net.
Mit freundlichen Grüßen
5 Antworten
Setze doch einfach einmal konkrete Zahlen in den Algorithmus ein:
// init
alt = 1
neu = 0
// loop 1
alt = 1 + 0 = 1
neu = 1 - 0 = 1
output: 1 1
// loop 2
alt = 1 + 1 = 2
neu = 2 - 1 = 1
output: 2 1
// loop 3
alt = 2 + 1 = 3
neu = 3 - 1 = 2
output: 3 2
// loop 4
alt = 3 + 2 = 5
neu = 5 - 2 = 3
output: 5 3
// loop 5
alt = 5 + 3 = 8
neu = 8 - 3 = 5
output: 8 5
// etc.
Je Schleifendurchlauf verändern sich insgesamt 3 Variablen: alt, neu und i. Letztere Variable dient als Zähler. Sie wird bei jedem Durchlauf um 1 erhöht, bis sie dem Wert 20 entspricht. Dann ist die Schleifenbedingung erfüllt und der Programmfluss springt aus dem Konstrukt heraus.
Des Weiteren wird die obige Berechnung durchgeführt, die sich auf alt und neu bezieht.
Laufvariable i soll nur alles 20 mal durchlaufen, also die Rekursion "Addition der beiden Vorgänger" 20 mal wiederholen.
Der Iterationsrechner zeigt das in nur 2 Zeilen:
Statt einer For-Schleife, die mit 1 beginnt, benutzt der Iterationsrechner immer eine Loop-Until-Schleife, die immer mit i=0 beginnt. Mit den Modi IM=...
kann man definieren, ob das i am Ende noch incrementiert werden darf oder nicht.
Mathematiker kennen jedoch schon über 100 Jahre die explizite Formel dieser Fibonacci-Funktion, mit der man auch reelle Zahlen berechnen kann. Da double Variablen nur etwa 15 Nachkommastellen genau sind, bietet sich die Rundungsfunktion mit an.
I ist einfach nur ne Zähl Variable. Damit läuft die for schleife 20 mal durch. Sie muss nicht direkt den Impact auf die neu und alt variable haben. Diese variablen ändern sich nach jedem durchlauf und werden deswegen erhört. Daher funzt das ganze
;i<18;
Jupp geht
hmm habs versucht es zählt trotzdem 18x mal auf
Dann eben i<=17
for (int i=101; i<=121; i=i+1)
i selbst hat keinen Einfluss auf die Berechnung. Hauptsache die Anzahl der "Schritte" passt.
wie wäre es mit
int steps = 20;
do {
//do your stuff here
steps--; //decrement steps
} while (steps > 0);
I wird um eins erhöht
ah soo geht das ok danke und könnte man eigentlich die for schleife so einstellen das man zb nur das 18. mal ausgibt? also das 1-17 und 19-20 weggelassen wird zum Beispiel?