2012-11-02 80 views
1

我有一個C編程的問題。我想達到大量的斐波那契序列,但程序,47分鐘給出錯誤。這是預覽。斐波納契數列c prog

1 
2 
3 
5 
8 
13 
21 
34 
55 
89 
144 
233 
377 
610 
987 
1597 
2584 
4181 
6765 
10946 
17711 
28657 
46368 
75025 
121393 
196418 
317811 
514229 
832040 
1346269 
2178309 
3524578 
5702887 
9227465 
14930352 
24157817 
39088169 
63245986 
102334155 
165580141 
267914296 
433494437 
701408733 
1134903170 
1836311903 
**-1323752223** 
+0

請包括你已經嘗試過的代碼,以數字存儲的FIB的。 –

+3

C中的所有'int'類型都有它們可以計算的數字的上限。甚至一個64位的'unsigned long long'也不需要很長時間就會溢出。如果您想要更大的數字,您需要查看多精度算術庫,例如GNU Multiple Precision Arithmetic Library([GMP](http://gmplib.org))。 –

+0

整數溢出 – pyCthon

回答

1

好吧,如果你想真正大量你可以使用一個數組,因爲它是計算

5

看起來像翻過了32位整數的限制。嘗試使用64位整數。

+1

64位*無符號*整數,也許是......'無符號長整型' – paddy

+0

使值無符號只會在溢出設置之前(與相同寬度的有符號值相比)給出一個額外的迭代。 – mah

+0

那麼64位int的最大值是9,223,372,036,854,775,807(無符號是它的兩倍)。用戶顯然碰到的屏障是2,147,483,647。看起來你會得到更多的迭代,但是,重點仍然是你只能走得這麼遠。用戶只需要決定他想要的計算上限和精度。如果使用浮點數,則有更高的限制,但在大數值時會失去精度。 – Ian