关于Fibonacci数列问题

来源:百度知道 编辑:UC知道 时间:2024/09/18 16:38:43
题目20:编写函数jsvalue,它的功能是:求Fibonacci数列中大于t的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为:
F(0)=0,F(1)=1
F(n)=F(n-1)+F(n-2)
最后调用函数writeDat()读取10个数据t,分别得出结果且把结果输出到文件out.dat中。
例如:当t=1000时,函数值为:1597。
注意:部分源程序已给出。
请勿改动主函数main()和写函数writeDat()的内容。
答案为:
{ int f1=0,f2=1,fn;
fn=f1+f2;
while(fn<=t)
{f1=f2;
f2=fn;
fn=f1+f2;}
return fn;
}
我不太懂,怎么题目里和答案里的f1部是一个值。还有为什么答案里fn=f1+f2。请高手指点一下

题目里F(1)是常量,答案里的f1和f2是变量。初始状态f1=0=F(0),f2=1=F(1),fn=f1+f2=F(0)+F(1)=F(2)。若F(2)<=t,则调整各变量的值:f1=f2=F(1),f2=fn=F(2),fn=f1+f2=F(1)+F(2)=F(3),若F(3)<=t,则继续调整:f1=f2=F(2),f2=fn=F(3),fn=f1+f2=F(2)+F(3)=F(4),......,直到fn=F(n)>t,这时的fn即为所求值。

可以直接递归运算...也可以用矩阵运算