斐波那契级数出错了

Fibonacci series gone wrong

本文关键字:出错 错了      更新时间:2023-10-16

>我正在尝试在名为"斐波那契.txt"的文件中打印斐波那契级数,最多 200 个术语 但是执行后,该文件包含一些错误的和,

有些金额低于预期

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

这些是一些中期条款。显然,通过计算位数,我们可以看到某些项比以前的项少。

您的 sum 变量中存在溢出。 无符号长整型具有最大4294967295数。例如,尝试使用__int64