我想打印斐波纳契序列中的前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;
}
答案 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)
请参阅此内容以供参考