|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 every-day 于 2018-8-16 17:44 编辑
关于斐波那契数列,输出制定位置的程序。程序无法运行。
希望前辈们可以帮忙看看问题所在
1
1 //第一组
2
3 //第二组
5
8 //……
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946
17711
28657
46368
75025
#include <stdio.h>
void main()
{
long int f1,f2; //参考小甲鱼老师的原始程序
int i,x; //声明变量x用来表示指定位置。F(x)=?
printf("请输入大于2的一个数:"); //在这里我先剔除了初始值,F(1)=1,F(2)=1;
scanf("%d",&x);
f1=f2=1; //
if(x%2==1)
{
for(i=1;i<((x+1)/2);i++) //判断x在第几组(两个数为一组),是单数还是双数。在第一组就不满足条件跳过,第二组就循环一次。
{
f1=f1+f2;
f2=f2+f1;
}
printf("F(x)=F(%d) = %12lf\n",x,f1); //单数就输出f1,eg:x=3,满足循环条件,f1=1+1=2;
}
if(x%2==0)
{
for(i=1;i<(x/2);i++)
{
f1=f1+f2;
f2=f2+f1;
}
printf("F(x)=F(%d) = %12lf\n",x,f2);
}
}
#include <stdio.h>
int main() //建议写 int
{
long int f1,f2;
int i,x;
printf("请输入大于2的数字:");
scanf("%d",&x);
f1 = f2 = 1;
if(x%2 == 1)
{
for(i = 1; i < ((x+1)/2); i++)
{
f1 = f1 + f2;
f2 = f2 + f1;
}
printf("F(x) = F(%d) = %ld\n", x, f1);
}
else //if(x%2 == 0) // 其实这样就可以了
{
for(i = 1; i < (x/2); i++)
{
f1 = f1 + f2;
f2 = f2 + f1;
}
printf("F(x) = F(%d) = %ld\n", x, f2);
}
return 0; //配合 return 0 对调试有帮助
}
记得加上适当的空格
|
-
|