public class wonder {
public static int [] wonder (int seed) {
int [] wondernums;
int i;
wondernums = new int[1024];
wondernums[0] = seed;
for (i = 0; i < 1024; i++) {
if ((wondernums[i] % 2) == 0)
wondernums[i+1] = wondernums[i]/2;
else
wondernums[i+1] = wondernums[i]*3+1;
if (wondernums[i+1] == 1)
break;
}
if ((i == 1024) && (wondernums[i-1] != 1)) {
System.out.println("Out of space");
for (i = 0; i < 1024; i++)
wondernums[i] = -1;
}
for (i = i + 2; i < 1024; i++)
wondernums[i] = -1;
return wondernums;
}
public static void printwondernums (int seed) {
int [] wondernums = new int[1024];
int i;
wondernums = wonder(seed);
for (i = 0; i < 1024; i++) {
if(wondernums[i] < 0)
break;
System.out.print(wondernums[i] + " ");
}
System.out.println(" ");
}
public static void main(String [] args) {
int [] wondernums = new int[1024];
int i;
int j;
int counti;
int countj;
wondernums = wonder(1);
for (j = 1; wondernums[j] >= 0; j++);
counti = 1;
countj = j;
for (i = 1; i <= 100; i++) {
wondernums = wonder(i);
for (j = 0; wondernums[j] >= 0; j++);
if (j > countj) {
counti = i;
countj = j;
}
}
System.out.println ("Am meisten Schritte benoetigte die Zahl " + counti + " mit " + countj + " Schritten");
wondernums = wonder(counti);
printwondernums(counti);
printwondernums(5);
printwondernums(22);
System.out.println (wonder_recursive(0, 22));
System.out.println (Wunder_wie_in_der_Aufgabe_gefordert(22));
}
public static int wonder_recursive (int i, int num) {
if (num == 1)
return i;
if ((num % 2) == 0)
return wonder_recursive(i+1, num/2);
else
return wonder_recursive(i+1, num*3+1);
}
public static int Wunder_wie_in_der_Aufgabe_gefordert (int seed) {
int n;
n = 0;
while(seed != 1) {
if ((seed % 2) == 0)
seed = seed / 2;
else
seed = seed * 3 + 1;
n++;
}
return n;
}
}