习题6-4 使用函数输出指定范围内的Fibonacci数
- 题目要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有Fibonacci数。所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列。
- 其中函数fib须返回第n项Fibonacci数;函数PrintFN要在一行中输出给定范围[m, n]内的所有Fibonacci数,相邻数字间有一个空格,行末不得有多余空格。如果给定区间内没有Fibonacci数,则输出一行“No Fibonacci number”。
- 代码如下
#include<stdio.h>
int fib(int n);
void PrintFN(int m,int n);
int main()
{
int m,n,t;
scanf("%d %d %d",&m,&n,&t);
printf("fib(%d) = %d\n",t,fib(t));
PrintFN(m,n);
return 0;
}
int fib(int n)
{
int num= 0;
int i = 2;
if(n<=2)
return 1;
else
{
int a[10000];
for(int k = 0;k<n;k++)
{
a[k] = 0;
}
for(i = 2;i<n;i++)
{
a[0]=a[1]=1;
a[i] = a[i-1] +a[i-2];
}
num = a[n-1];
return num;
}
}
void PrintFN(int m,int n)
{
int i = 1;
for(;fib(i)<m;i++);//求大于m的一个fib数
if(fib(i)>n)
printf("No Fibonacci number");
else
{
while(fib(i)<=n)
{
printf("%d",fib(i));
if(fib(i+1)<=n)
printf(" ");
i++;
}
}
}
初学代码,如有建议,不吝赐教