0

OK、次のコードで定義された Collat​​z シーケンスの長さがあります。

    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(collat​​z(3000)) => 48) をチェックしました。これを行うためにさまざまなサイトを使用しましたが、1 つの番号が機能しません。そして、その数はまさに ProjectEuler の 14 番目の問題の解です。837799 では 524 ではなく 58 という異なる結果が生成されるのに、1 つおきの数値では正しい結果 (正しいチェーンの長さ) が得られるのはどうしてですか。

4

1 に答える 1