|
Verfasser |
Nachricht |
SparkMonkay
KaptainBio
Beiträge: 1.434
Gruppe: User
Registriert seit: May 2012
Status:
Abwesend
Danke erhalten: 515
|
Java Schleife, wie anstellen?
Hallo Leute
Ich lerne zur Zeit Java und bin bei den Schleifen angekommen.
Nun würde ich gerne wissen, wie ich eine Schleife gestalten soll um die Fibonachi Zahlen mit zu erzeugen?
Also aufwändig sähe es so aus
public class FibonachiZahlen1 {
public static void main(String[]args){
int a=1;
int b=a+a;
int c=b+a;
int d=c+b;
int e=d+c;
(...)
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(e);
(...)
}
}
Wie kann ich die Schleife gestalten, dass ich ihm sage, dass e das in Schleifen-Version machen soll.
int a=1
int b=1
a+b=c;
c=b,
dann in der nächsten Zeile wird das alte c=a, damit das neue c an die Stelle des altens c`s rücken kann, jemand eine Idee?
Mit der while schleife kann ich nix anfangen.
MfG
PS: Wer Googeln sagt, der soll mir mal sagen wonach ich googeln soll, denn ich habe keinen Plan wonach ich googeln soll. So viel google in einem Satz
Dieser Beitrag wurde zuletzt bearbeitet: 06.07.2013 18:58 von SparkMonkay.
|
|
06.07.2013 18:54 |
|
|
|
fkrone
*meow*
Beiträge: 3.421
Gruppe: Super Moderator
Registriert seit: Dec 2009
Status:
Offline
Danke erhalten: 5342
|
RE: Java Schleife, wie anstellen?
Es geht mit ein paar wenigen Variablen, die man im Kreis zuweisen kann, ich mache mich mal kurz daran, meine Idee in Code umzusetzen
Edit: Umsetzung in einer for-Schleife (finde ich persönlich am sinnigsten, falls anders gefordert einfach sagen):
public class FibonachiZahlen1 {
public static void main(String...args){
int previous = 1; //Startwert
System.out.println(previous);
int current = previous + previous; //Erste Berechnung
System.out.println(current);
int result;
int loopCount = 100; //so oft laufen lassen wie benoetigt
for ( int i = 0; i < loopCount; i++) {
result = current + previous; //Berechnet Ergebnis
System.out.println(result);
previous = current; //Variablen neu zuweisen, um neue Berechnung anzustellen
current = result;
}
}
}
Muss dazu sagen, ist untested. Zudem meine Empfehlung: Kein Physikercode (aka 1-Buchstaben-Variablen, ist schlechter Stil und schlecht zu lesen). Werde das Ding gleich noch durchkommentieren.
Dieser Beitrag wurde zuletzt bearbeitet: 06.07.2013 19:15 von fkrone.
|
|
06.07.2013 19:03 |
|
Folgende User bedanken sich: |
|
SparkMonkay
KaptainBio
Beiträge: 1.434
Gruppe: User
Registriert seit: May 2012
Status:
Abwesend
Danke erhalten: 515
|
RE: Java Schleife, wie anstellen?
Danke, denn ich arbeite mit dem Buch von Markt und Technik, nur grade weiß ich nciht wo man das finden kann.
Danke noch für die Info, das man die Variablen im Kreis drehen kann. :3
PS: Auf dich hab ich gewartet
PS2:
Zudem meine Empfehlung: Kein Physikercode (aka 1-Buchstaben-Variablen, ist schlechter Stil und schlecht zu lesen).
Joa ich weiß, aber ich komme persönlich etwas besser mit den "aka 1-Buchstaben-Variablen" klar.
PS3:
hab es durchlaufen lassen, und da funktioniert der Teil mit dem "Variablentauschen" nicht, hab es auseinander genommen, um das herauszufinden
Dieser Beitrag wurde zuletzt bearbeitet: 06.07.2013 19:40 von SparkMonkay.
|
|
06.07.2013 19:05 |
|
|
|
fkrone
*meow*
Beiträge: 3.421
Gruppe: Super Moderator
Registriert seit: Dec 2009
Status:
Offline
Danke erhalten: 5342
|
RE: Java Schleife, wie anstellen?
Ich teste es mal in Eclipse, bisher nur in reinem Text-Editor gearbeitet
|
|
06.07.2013 19:49 |
|
|
|
SparkMonkay
KaptainBio
Beiträge: 1.434
Gruppe: User
Registriert seit: May 2012
Status:
Abwesend
Danke erhalten: 515
|
RE: Java Schleife, wie anstellen?
Ich mache es nur mit Eclipse.
PS: mir ist noch was aufgefallen
public class FibonachiZahlen2 {
public static void main(String[]args){
int a = 1; //Startwert
System.out.println(a);
//Erste Berechnung
int b = a + a;
System.out.println(b);
int c;
//so oft laufen lassen wie benoetigt
int Schleife = 45;
for ( int Anzahl = 0; Anzahl < Schleife; Anzahl++) {
//Berechnet Ergebnis
c = b + a;
System.out.println(c);
//Variablen neu zuweisen, um neue Berechnung anzustellen
a = b;
b = c;
}
}
}
Mach mal Copy Paste und guck mal was unten rauskommt.
"-1323752223"
Dafuq?
|
|
06.07.2013 19:51 |
|
|
|
fkrone
*meow*
Beiträge: 3.421
Gruppe: Super Moderator
Registriert seit: Dec 2009
Status:
Offline
Danke erhalten: 5342
|
RE: Java Schleife, wie anstellen?
Durch deinen Code kämpfe ich mich bald nicht mehr bei den Variablen. Damit machst du keinem eine Freude (vor allem später im Berufsleben nicht). Man blickt irgendwann einfach nicht mehr durch.
Beim Testen hat es funktioniert, man läuft nur irgendwann an das Problem, dass int nicht mehr ausreicht von der Größe. Daher hier eine überarbeitete Version, die das kann:
public class FibonachiZahlen1 {
public static void main(String...args){
double previous = 1; //Startwert
System.out.println(previous);
double current = previous + previous; //Erste Berechnung
System.out.println(current);
double result;
int loopCount = 100; //so oft laufen lassen wie benoetigt
for ( int i = 0; i < loopCount; i++) {
result = current + previous; //Berechnet Ergebnis
System.out.println(result);
previous = current; //Variablen neu zuweisen, um neue Berechnung anzustellen
current = result;
}
}
}
|
|
06.07.2013 19:57 |
|
Folgende User bedanken sich: |
|
SparkMonkay
KaptainBio
Beiträge: 1.434
Gruppe: User
Registriert seit: May 2012
Status:
Abwesend
Danke erhalten: 515
|
RE: Java Schleife, wie anstellen?
Ok, werde vorher gucken wenn ich soetwas ausgebe die Variablen zu überarbeiten.
und int ist für solch eine Zahlengröße nicht geeignet, nur double!
|
|
06.07.2013 20:00 |
|
|
|
KICKinYaFACE
Experte
Beiträge: 749
Gruppe: User
Registriert seit: Nov 2009
Status:
Offline
Danke erhalten: 240
|
RE: Java Schleife, wie anstellen?
Das ganze lässt sich auch wunderbar über eine Rekursive Methode gestalten, also über eine Funktion die sich selbst aufruft. Ist meistens aber nicht so leicht zu verstehen, wenns man es aber verstanden hat spart man sich seehr viel programmierarbeit.
Könnte ungefähr so aussehen:
public static void main(String [] args){
int n = Integer.parseInt(args[0]);
if (n >= 1){
int i;
for (i=1; i<=n; i++){
System.out.print(fib(i)+" ");
}
}
else
System.out.print("zahl is nicht positiv");
}
public static int fib(int n){
if (n<=2)
return 1;
else
return fib(n-2)+fib(n-1);
}
Und noch zu der normalen, also iterativen Lösung von meinem Vorredner: Wenn dir int nicht genug ist nimm anstatt Double doch lieber ein long int, das müsste dir vollkommen reichen. Mit double holst du dir noch Kommazahlen mit ins Boot und das willst du bei Fibonacci zahlen ja eigentlich nicht, oder?
mfg kick
|
|
06.07.2013 23:27 |
|
|
|
Tepoo
Banned
Beiträge: 586
Gruppe: Banned
Registriert seit: May 2012
Status:
Offline
Danke erhalten: 331
|
RE: Java Schleife, wie anstellen?
für Fibonacci (nicht mit ch sondern cc) ist big int oder long am besten.
Und was ich damals im Studium gelernt habe: Ob jemand sprechende Variablen nimmt oder nur 1-Buchstaben Variablen zeigt ob er ein Programmierer ist oder ein Coder.
Und wer später Geld damit verdienen will, sollte aufpassen das er kein Coder ist/wird.
1. PS3 DEX 4.40 | 3. PS3 OFW 4.XX
2. PS3 CFW 4.40 | 4. PS3 OFW 4.XX
1. PSP CFW 6.XX | 1. PSV OFW 2.06
|
|
07.07.2013 08:22 |
|
|
|