我想打印Fibonacci序列中名爲「fibonacci.txt」多達200項,但執行後的文件包含了一些錯誤的款項文件,Fibonacci序列出了錯
一些款項均低於預期
- 我檢查了,它不是任何錯誤的數據類型,我用的無符號長,所以應該不會有任何問題。
- 我正在使用Cfree 5.0。
我附上代碼和輸出的問題。
int main(){
ofstream text_file;
text_file.open("fibonnacci.txt");
unsigned long sum, sum1=1, sum2=1;
text_file<<sum1<<"\t"<<sum2<<"\t";
for(int i = 1; i < 200; i++) {
sum = sum1 + sum2;
text_file<<sum<<"\n";
/*if(i%5 == 0){
text_file<<"\n";
}*/
sum2 = sum1;
sum1 = sum;
}
text_file<<"\n";
return 0;
}
輸出
102334155
165580141
267914296
433494437
701408733
1134903170
1836311903
2971215073
512559680
3483774753
3996334433
3185141890
2886509027
1776683621
368225352
2144908973
2513134325
363076002
2876210327
3239286329
1820529360
764848393
2585377753
3350226146
這些都是一些術語中旬。很明顯,我們可以通過計算位數來看到某些術語比以前的術語少。
您需要詳細瞭解[整數類型](http://en.cppreference.com/w/cpp/language/types#Integer_types)並檢查[他們的範圍](http://en.cppreference.com/w/cpp/language/types#Range_of_values)。 –
我知道無符號長數據類型有大約40億的高範圍,所以不應該有任何問題。 –
如果你有18億和增加29億,結果會是什麼? *超過*無符號32位整數約40億的限制。這就是您在添加時遇到的問題,例如'1836311903'和'2971215073'並獲得'512559680'。 –