我想打印出斐波那契數列'N'數字。所有的作品都按照期望值運行直到f(92),但當我試圖獲得f(93)的值時,數值變爲負值:「-6246583658587674878」。這怎麼可能?以下邏輯中的錯誤是什麼?斐波那契數列f(93)具有負值,怎麼樣?
public long fibo(int x){
long[] arr = new long[x+1];
arr[0]=0;
arr[1]=1;
for (int i=2; i<=x; i++){
arr[i]=arr[i-2]+arr[i-1];
}
return arr[x];
}
f(91) = 4660046610375530309
f(92) = 7540113804746346429
f(93) = -6246583658587674878
這是因爲數據類型?還有什麼數據類型可用於打印斐波納契數列的N個數字? N可以是範圍[0..10,000,000]內的任何整數。
似乎是整數溢出。我敢打賭,BigInteger會更好用。 – Makoto
由於長時間使用64位編碼範圍在[-2^63,2^63 -1]之間。 – mweisz