我無法找到此代碼中的錯誤。如果歐拉項目沒有將我的答案視爲不正確,我會向天堂發誓我的代碼是正確的。14 - 項目歐拉 - Java - 錯誤的答案 - 錯誤?
我可以使用另一種方法,但這個問題並不是那麼複雜,但我已經徹底擊敗了試圖找到該錯誤。
的問題是:
以下迭代序列是爲正整數的集合來定義:
Ñ→N/2(n爲偶數) Ñ→3N + 1(n爲奇數)
使用上述規則,並用13開始,我們產生以下序列:
13→40→20→10→5→16→8→4→2→1 可以看出,這一序列(首發在13和完成在1)包含10個術語。儘管尚未證明(Collatz問題),但可以認爲所有起始數字都是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