(通常呼ばれる) 雹のシーケンスを実行するプログラムを作成しました。プログラムは基本的にこれを実行します。
int
(値) を作成し、それに値を割り当てます。
int が偶数の場合は、2 で割ります。
int が奇数の場合は、3 倍して 1 を足します。n が 1 になるまで、このプロセスを続けます。
ほとんどの数値で正常に動作しているようですが、この数値 99888769 では、アプリが負の整数でハングします。これはなぜですか?、彼らは、誰もそれが止まることを証明できなかったと言います.私はそれを解決したとは思っていません. しかし、なぜ私のアプリが停止するのかを知ることは興味深いでしょう. -
private void hailStoneSequence(){
int value = 99888769;
int i = 0;
boolean trueOrFalse = isOddOrEven (value);
while (value != 1){
while (trueOrFalse == true && value != 1){
i++;
int previousValue = value;
value = value / 2;
println( previousValue +" is even, so I take half: "+value);
trueOrFalse = isOddOrEven (value); // returning true or false, and inserting the newly divided number. So that it breaks loop when nescesary.
}
while (trueOrFalse == false && value != 1){
i++;
int previousValue = value;
value = (value * 3) + 1;
println (previousValue +" is odd, so I make 3n+1: "+value);
trueOrFalse = isOddOrEven (value);
}
}
println ("\n\nThe process took "+i+" to reach "+value);
}
private boolean isOddOrEven(int value){
/*
* Takes an value and returns true, if that number is even.
* Else it returns false.
*/
if (value % 2 != 0){
return false;
}else{
return true;
}
}
}