OK、次のコードで定義された Collatz シーケンスの長さがあります。
private static int count = 0;
private static int collatz(int n){
count++;
if(n > 1){
if(n % 2 == 0){
return collatz(n/2);
}
return collatz(3*n+1);
}
return count-1;
}
ここで、アルゴリズムが正しく機能するかどうかを確認するために、さまざまな数値の出力 (例: print(collatz(3000)) => 48) をチェックしました。これを行うためにさまざまなサイトを使用しましたが、1 つの番号が機能しません。そして、その数はまさに ProjectEuler の 14 番目の問題の解です。837799 では 524 ではなく 58 という異なる結果が生成されるのに、1 つおきの数値では正しい結果 (正しいチェーンの長さ) が得られるのはどうしてですか。