Lösungsvorschlag 4.1 - Aufgabe 4: Unterschied zwischen den Versionen

Aus ComeniusWiki
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: „<syntaxhighlight lang="java"> public class Collatz{ public void collatz(int m){ int n=m; int counter=0; while(n!=1){if(n%2==0){n=n/2;counter++;}else{n=3*n+1;c…“)
 
 
(Eine dazwischenliegende Version von einem Benutzer wird nicht angezeigt)
Zeile 3: Zeile 3:
  
 
public void collatz(int m){
 
public void collatz(int m){
 +
//Übertrag auf Variable n um den Anfangswert zu bewahren
 
int n=m;
 
int n=m;
 +
//counter speichert die Anzahl der Schritte ab
 
int counter=0;
 
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++;}};
 
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.");}
 
{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){
 
public int collatz2(int m){
 
int n=m;
 
int n=m;
Zeile 18: Zeile 23:
 
public void collatzMax(int m){
 
public void collatzMax(int m){
 
int n=m;
 
int n=m;
 +
//saveM speichert den jeweils aktuellen Wert der Zahl mit der höchsten Schrittzahl ab
 
int saveM=n;
 
int saveM=n;
 
int counter=0;
 
int counter=0;
 +
//max speichert die höchste Anzahl von Schritten ab
 
int max=0;
 
int max=0;
  

Aktuelle Version vom 6. April 2014, 18:49 Uhr

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.");
}
}