Lösungsvorschlag 4.1 - Aufgabe 4
Aus ComeniusWiki
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."); } }