/*请编写函数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;
}这是编写一个函数的方法:
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;
}