Lösungsvorschlag 4.1 - Aufgabe 4

Aus ComeniusWiki
Wechseln zu: Navigation, Suche
public class Collatz{
 
public void collatz(int m){
//Übertrag auf Variable n um den Anfangswert zu bewahren
int n=m;
//counter speichert die Anzahl der Schritte ab
int counter=0;
//die while-Schleife läuft solange bis der Endwert 1 erreicht ist
while(n!=1){if(n%2==0){n=n/2;counter++;}else{n=3*n+1;counter++;}};
{System.out.println("Die Reihe mit der Anfangszahl "+m+" endet nach "+counter+" Schritten bei 1.");}
}
 
//Die Erweiterung erfordert einen rekursiven Aufruf der Methode collatz(), 
//so dass diese zuerst als Methode mit Rückgabewert erstellt werden muss
public int collatz2(int m){
int n=m;
int counter=0;
while(n!=1){if(n%2==0){n=n/2;counter++;}else{n=3*n+1;counter++;}};
return counter;
}
 
public void collatzMax(int m){
int n=m;
//saveM speichert den jeweils aktuellen Wert der Zahl mit der höchsten Schrittzahl ab
int saveM=n;
int counter=0;
//max speichert die höchste Anzahl von Schritten ab
int max=0;
 
for(int i=2; i<=m;i++){
counter=collatz2(i);
if(counter>max){max=counter;saveM=i;};
}
System.out.println("Die Anfangszahl "+saveM+" ergibt die längste Reihe mit "+max+" Schritten.");
}
}