“我正在编写斐波那契数列的代码,并且在第44个学期开始后,为什么我开始在数列中得到负值?
#include <stdio.h>
int main(void)
{
int i, n , t1 = 0 ,t2 = 1 ,next;
printf("Enter the number of terms for series:");
scanf("%d", &n);
while(i<=n){
next = t1 +t2 ;
t1 = t2;
t2 = next;
printf("%d\n", next);
i++;
}
return 0;
}
“预期输出是斐波那契数列,直到任何数量的任期,但在第44个任期之后,我开始逐渐获得负数序列”
答案 0 :(得分:2)
您得到负值,因为斐波那契数列的第45个元素超过了整数可以达到的最大值。 (2147483647)
答案 1 :(得分:0)
我没有测试程序,但是我想我知道答案。
这个数字往往很快就会变得很大。 44已经是一个很大的数字。 (例如,您可以使用调试器查看发生了什么。)
很有可能“ int”的大小不足以容纳数字,因此发生了一些意外情况。
尝试修改程序以使用64位变量(“ long long”)。事情将会改变。甚至“ unsigned int”也将为您提供更多的空间,但数量不多。
其他提示: