为了账号安全,请及时绑定邮箱和手机立即绑定

老哥们,这个哪里错了

/*请编写函数fun,它的功能是:求Fibonacci数列中大于t(t>3)的最小数,结果由函数返回。其中Fibonacci数列F(n)的定义为:
F(0)=0,F(1)=1 
F(n)=F(n-1)+F(n-2) 
假如:当t=1000时,函数值为1597。
注意:部分源程序给出如下。 
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序: */
#include <math.h>
#include <stdio.h>
int  fun(int t)
{
 /**************Begin************/
    int x;
    if (t>=3){x=(fun(t-1)+fun(t-2));}
    else if(t==1){x=1 ;return x;}
    else if(t==0){x=0;return x;}
    

    return x;
 /**************End*************/
}
int main()
{
 int  n;
 FILE *out,*in;  
 n=1000;
 printf("n=%d,  f=%d\n",n, fun(n));
 /******************************/
 in=fopen("in39.dat","r");
 out=fopen("out39.dat","w");
 while(!feof(in))
{
 fscanf(in,"%d\n",&n);
      fprintf(out,"%d\n",fun(n));
}
 fclose(in);
 fclose(out);
 /******************************/
return 0;
}


正在回答

1 回答

这是编写一个函数的方法:

int fun(int t)

{

int s0=0;

int s1=1;

int s=0;

int i;

for(i=3;i>0;i++)         //直接从Fibonacci数列第三项开始无限循环

{

s=s0+s1;                 //f(n)

s0=s1; //将f(n-2)的值赋予s0

s1=s; //将f(n-1)的值赋予s1

if(s>t)

break; //当找到第一个即最小t的数s是跳出循环

}

return s;

}

这是编写了两个函数:

//Fibonacci数列各项的表达方式

int f(int n)

{

int s=0;

if(n==0)

s=0;

else if(n==1)

s=1;

else

s=f(n-1)+f(n-2);

return s;

}

//求大于t的最小项

int fun(int t)

{

int i=0;

int s=0;

for(i=0;f(i)<=t;i++)        //空循环,当f(i)大于t是循环结束

{                

}

s=f(i);

return s;

}


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926206    人
  • 解答问题       20797    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

老哥们,这个哪里错了

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信