关于斐波那契数列
我刚学c,写了个斐波那契数列的程序,但是从48项开始结果就是负数了,怎么回事啊?有哪位大侠解答一下!ps:我曾把int f1,f2,f3;改为long f1,f2,f3;还是没用!第48个值为:-811192543
/*
2011年11月3日20:21:25
斐波那契数列指第n项是前两项之和:1,2,3,5,8,13,21以此类推
斐波那契数列第n项的值
*/
#include<stdio.h>
int main (void)
{
int f1,f2,f3;
int n =1,i;
while ( n != 0)
{
f1 = 1;
f2 = 2;
printf("请输入n的值:(退出请输“0”)");
scanf("%d",&n);
if (n ==1)
{
printf("第%d个值为:%d\n",n,f1);
}
else if (n == 2)
{
printf("第%d个值为:%d\n",n,f2);
}
else if (n >= 3) //从第三项开始的算法
{
for(i = 3; i <=n; i++)
{
f3 = f1 + f2;
f1 = f2;
f2 = f3;
}
printf("第%d个值为:%d\n",n,f3);
}
else if ( n != 0)
{
printf("您输入的值有误,请重新输入!\n");
}
}
return 0;
}
/*
在WIN7下Vc++6.0中的输出结果是:
------------------------------
能正确显示到第46项。
------------------------------
*/
[ 本帖最后由 dada125 于 2011-11-4 10:10 编辑 ]