fibonacci序列溢出,c++

fibonacci sequence overflow, C++

本文关键字:c++ 溢出 fibonacci      更新时间:2023-10-16

我想打印斐波那契数列中的前100个数字。我的程序打印到大约20个数字,然后这些数字变为负数。

有人可以解释这个给我,请提供一个修复?

谢谢,

/*Fibonacci sequence*/
#include <iostream>
using namespace std;
int main(){
    long int i, fib;
    int firstNum=0, secondNum=1;
    cout << firstNum << endl; 
    cout << secondNum << endl;
    for (i=0; i < 100; i++){
        fib = firstNum + secondNum;
        firstNum = secondNum;
        secondNum = fib;
        cout << fib << endl;
    }
    return 0;
}

您所看到的是一个整数溢出问题。firstNum和secondNum不长

这应该修复它

    unsigned long long i, fib;
    unsigned long long firstNum=0, secondNum=1;
编辑:

这将帮助您避免在第20个数字之后溢出,但您的程序仍然会溢出。您可以使用unsigned long long,并且您将使它达到第100个序列元素。

即使unsigned long long int也会抛出更高的fabonacci num(大于92)的范围,但如果仍然感兴趣,你可以将它们逐个数字存储在数组

看到这个https://docs.google.com/file/d/0BwtP9e5j1RbpSjhvSG4wbkhGcmM/edit

    我们可以将值存储在动态创建的结构中,例如作为链表(如果我们想要存储所有斐波那契数)
  • 我们可以使用三个字符串数组来保存sum和temp值来打印它,这将解决你的问题。

请参考

打印第n个斐波那契数[最多1000位]