斐波纳契系列出错

时间:2016-02-04 17:24:49

标签: c++ c++11

我试图在名为" fibonacci.txt"的文件中打印Fibonacci系列。最多200个术语但执行后该文件包含一些错误的总和,

  

一些金额低于预期

  • 我已经检查过它没有错误的数据类型,我已经使用了unsigned long,所以不应该有任何问题。
  • 我正在使用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

这些是中期。显然,通过计算位数,我们可以看到某些术语比前面的术语少。

1 个答案:

答案 0 :(得分:2)

你的sum变量有一个溢出。 unsigned long的最大数量为4294967295.尝试使用__int64例如