public class Collatz {
/**
* Collatz问题
* @param number
*/
public static void CollatzQ(int number){
String result = "";
int tmp = number;
while(true){
if(tmp == 1){
result = result + "Over";
System.out.println(result);
break;
} else if (tmp <= 0){
System.out.println("The number is error!!!");
break;
} else {
if (tmp % 2 == 0){
tmp = tmp/2;
}else {
tmp = 3 * tmp + 1;
}
result = result + tmp + "\t";
}
}
}
public static void main(String[] args) {
for(int num = 0; num < 10; num++){
Collatz.CollatzQ(num);
}
}
}
The number is error!!!
Over
1 Over
10 5 16 8 4 2 1 Over
2 1 Over
16 8 4 2 1 Over
3 10 5 16 8 4 2 1 Over
22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 Over
4 2 1 Over
28 14 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 Over
原文:http://www.cnblogs.com/yunkong/p/4403913.html