Collatz-Folge

anni

Grünschnabel
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?

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:
Klar rechnet er immer weiter, du hast ja auch keine Abbruchbedingung in der for schleife :D
Falls dein Wert 1 erreicht, mach nen break;
Ich weiss einige finden Loesungen mit break nicht schoen, funktioniert jedoch :)
 
Zurück