斐波那契序列溢出,C ++

时间:2015-10-16 21:15:48

标签: c++ fibonacci

我想打印斐波纳契序列中的前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;
}

3 个答案:

答案 0 :(得分:1)

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

这应该解决它

    unsigned long long i, fib;
    unsigned long long firstNum=0, secondNum=1;

编辑:

这将帮助您避免在第20个数字后溢出,但您的程序仍将溢出。您可以使用无符号long long,然后将它设置为第100个序列元素。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

请参阅此内容以供参考

Print nth Fibonacci number [upto 1000 digits]