Hallo Zusammen.
Ich bin blutiger Anfänger und soll nun ein kleine Methode schreiben, die dieses Problem löst.
Liefert die Anzahl nötigen Operation, um von n1 zu erreichen, wobei die Operation folgende ist:
wenn n ungerade ist, wird n = 3*n+1 gerechnet.
Andernfalls wird n = n/2 gerechnet.
z.B. ist Programm (7) = 16 Sequenz 7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1
Meine Frage ist jetzt, wie ich anstatt immer und immer wieder die gleiche if oder while methode schreibe, eine elegante Methode finde wie dies auch z.b für die Zahl 5000 gehen würde. Also quasi eine schleife in einer schleife die sich selbst wieder aufruft bis man bei 1 angelangt ist.
Könnte da mir jemand helfen?
[Java]
public static int ulam(int n) {
if (n%2==0){ //gerade Zahl
n=n/2;
}
while (n%2!=0){ //ungerade Zahl
n=3*n+1;
}
[/Java]
Ich bin blutiger Anfänger und soll nun ein kleine Methode schreiben, die dieses Problem löst.
Liefert die Anzahl nötigen Operation, um von n1 zu erreichen, wobei die Operation folgende ist:
wenn n ungerade ist, wird n = 3*n+1 gerechnet.
Andernfalls wird n = n/2 gerechnet.
z.B. ist Programm (7) = 16 Sequenz 7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1
Meine Frage ist jetzt, wie ich anstatt immer und immer wieder die gleiche if oder while methode schreibe, eine elegante Methode finde wie dies auch z.b für die Zahl 5000 gehen würde. Also quasi eine schleife in einer schleife die sich selbst wieder aufruft bis man bei 1 angelangt ist.
Könnte da mir jemand helfen?
[Java]
public static int ulam(int n) {
if (n%2==0){ //gerade Zahl
n=n/2;
}
while (n%2!=0){ //ungerade Zahl
n=3*n+1;
}
[/Java]