我試圖找到Fibonacci序列中的第一個數字以包含N個數字(N是在500和2000範圍內的某個地方)。我嘗試用下面的代碼來做到這一點:斐波那契序列算法
BigInteger num = BigInteger.valueOf(2);
BigInteger num1 = BigInteger.ONE;
BigInteger num2 = BigInteger.ONE;
int record = 0;
BigInteger TEN = BigInteger.valueOf(10);
public BigInteger run()
{
BigInteger temp = BigInteger.ZERO;
while(num2.compareTo(TEN.pow(SomeN - 1)) < 0)
{
if(num2.compareTo(TEN.pow(record + 1)) >= 0)
{
System.out.println(""+record);
record++;
}
temp = num1.add(num2);
num1 = num2;
num2 = temp;
num = num.add(BigInteger.ONE);
}
System.out.println(""+num);
System.out.println(""+num2);
return num2;
}
的問題是,當我測試了1500個數字,我得到的答案顯然是錯誤的。我不知道答案應該是什麼,我甚至在周圍檢查了答案,以防我的算法關閉10次冪(即我檢查了1499個數字和1501),但無濟於事。任何人看到有什麼不對?
你是否在任何一個項目歐勒問題的工作? – 2009-12-15 20:54:29
記錄應該是什麼?我在while子句中得到條件,但不是在if中的條件。 – Juan 2009-12-15 20:55:23
是的,我是。我不是在尋找答案,我只是在這裏看到了什麼問題。我的方法是有效的,並且當我將println()放入檢查打印的序列時,我得到了一個正確的序列(至少對於前40個整數)爲斐波納契... – Jonathan 2009-12-15 20:56:56