Hallo,
Aufgabe ist die Berechnung der Collatz-Folge nach einem eingegebenen Startwert.
Nun zum Problem. Bei der void f(int n) Methode(ab Zeile 37) soll die Schleife eigentlich nur durchlaufen werden, bis das erste Mal die 1 auftritt. Jedoch rechnet mein Programm immer weiter.
Sieht vielleicht jemand den Fehler?
Aufgabe ist die Berechnung der Collatz-Folge nach einem eingegebenen Startwert.
Nun zum Problem. Bei der void f(int n) Methode(ab Zeile 37) soll die Schleife eigentlich nur durchlaufen werden, bis das erste Mal die 1 auftritt. Jedoch rechnet mein Programm immer weiter.
Sieht vielleicht jemand den Fehler?
Code:
class Folge {
int a_0;
int laenge;
int max;
Folge (int x) {
a_0 = x;
if (x <= 0) {
a_0 = 1;
}
}
void ausgeben(){
System.out.println("Der Startwert ist: "+a_0);
System.out.println("Die gesamte Anzahl der Glieder ist: "+laenge);
System.out.println("Die maximale Zahl der Folge ist: "+max);
}
int next (int a) {
if (a % 2 == 0) {
a = a/2;
} else {
a = 3*a+1;
}
return a;
}
void f(int n) {
int folge = a_0;
for ( int i= 0; i < n; i++) {
folge = next(folge);
System.out.println(folge);
}
}
void f() {
laenge = 1;
int folge = a_0;
while (folge > 1) {
folge = next (folge);
laenge ++;
System.out.println(folge);
max = Math.max(max, a_0);
}
}
}
Zuletzt bearbeitet: