本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有Fibonacci数。所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列.
输入样例1:
20 100 7
输出样例1:
fib(7) = 13
21 34 55 89
输入样例2:
2000 2500 8
输出样例2:
fib(8) = 21
No Fibonacci number
int fib( int n )
{
int x1,x2,x;
x1=1;
x2=1;
x=0;
if(n<=2)
return 1;
else
{
for(int i=3;i<=n;i++)
{
x=x1+x2;
x1=x2;
x2=x;
}
return x;
}
}
void PrintFN( int m, int n )
{
int count,i;
count=0;
i=1;
while(fib(i)<=n)
{
if(fib(i)>=m)
{
count++;
if(count==1)
printf("%d",fib(i));
else
printf(" %d",fib(i));
}
i++;
}
if(count==0)
printf("No Fibonacci number");
}
(用while和if两个判断条件很好地限制住了斐波那契数列的范围,然后巧妙地用count实现输出格式的规范,然后i++,实现全范围斐波那契数列的不遗漏,真的很巧妙的一个做法,对初学者来说真的很神奇!)