问答题
1. 请编写函数proc(),它的功能是:求Fibonacci数列中小于n的最大的一个数,结果由函数返回。
Fibonacci数列F(n)的定义为
F(0)=0,F(1)=1
F(n)=F(n-1)+F(n-2)
例如,n=500时,函数值为377。
注意:部分源程序如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填写所编写的若干语句。
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<math.h>
#include<stdio.h>
int proc(intt)
{
}
void main()
{
int n;
system("CLS");
n=500:
printf("n=%d,f=%d\n",n,proc(n));
}
【正确答案】int proc(int t)
{
int a[500];
a[0]=0; //a[0]表示数列的第1项
a[1]=1; //a[1]表示数列的第2项
for(inti=2;i<=t;i++)
{
a[i]=a[i-1]+a[i-2];//根据公式列出第i项的计算式
if(a[i]>=t) //若a[i]大于t的值
returna[i-1];//返回a[i]的前一项a[i-1]的值
}
}
【答案解析】 由题目所给的公式可知,Fibonacci数列的第n项为第(n-1)项和第(n-2)项的和。要求Fibonacci数列中小于n的最大的一个数,首先,根据公式求出Fibonacci数列的第n项的值,若第i项大于n,则返回第(i-1)项的值。