私はこのコードのバグを見つけることができません。 Project Eulerが私の答えを正しくないと判断したのでなければ、私は自分のコードが正しいことを天に誓うでしょう。14 - プロジェクトオイラー - Java - 間違った答え - バグ?
私は別のアプローチを使うこともできますが、この問題はそれほど複雑ではありませんが、バグを見つけようと全滅しました。 3N + 1→→N/2 N
(nは偶数) n(nは奇数):
質問は次の反復配列は、正の整数の集合のために定義されている
上記のルールを使用し、13で始まるが、我々は以下の配列を生成する:
13→40→20→10→5→16→8→4→2→1 それは、この配列ことがわかります(開始13で終了し、1で終わる)は10項を含む。まだ証明されていませんが(Collatz Problem)、すべての開始数は1で終わると考えられます。
100万未満の最初の数字が最も長いチェーンを生成していますか?
私のコードは次のとおりです。
public class CollatzSequence014 {
public static void main(String [] args){
long start = System.currentTimeMillis();
long maxTotal = 0;
long inputNum = 0;
for (long i = 3; i < 1000000 ; i++){
long total = generateSequence(i);
if (total > maxTotal){
inputNum = i;
maxTotal = total;
}
}
long end = System.currentTimeMillis();
System.out.println("The input number was : " + inputNum + " and the total was " + maxTotal);
System.out.println("Time taken : " + (end - start) + "ms");
}
public static long generateSequence(long n){
long counter = 0;
long currentDigit = n;
while (currentDigit > 1){
counter++;
if (n % 2 == 0){
currentDigit = currentDigit/2;
}
else {
currentDigit = (3 * currentDigit) + 1;
}
}
return counter;
}
}
あなたはどのようなエラー/出力を得ていますか?実際にはエラーがありますか、これはただ時間切れですか? – Mureinik
[デバッガとは何ですか?また、どのようにして問題を診断するのに役立ちますか?](http://stackoverflow.com/questions/25385173/what-is-a-debugger-and-how-can-it-help-私の診断の問題) – Raedwald