使用函数输出指定范围内的Fibonacci数:输人两个正整数m和n(1≤m,n≤10 000),输出m~n之间所有的Fibonacci数。Fibonacci序列(第1项起):1 1 2 3 5 8 13 21……要求定义并调用函数fib(n),它它的功能是返回第n项Fibonacci数。例如,fib(7)的返回值是13。试编写相应程序。
#include<stdio.h> int fib(int n); int main(){ int m,n,j=1,fib_j,cnt=0; //fib_j为第j项Fibonacci数 printf("input m and n: "); scanf("%d %d",&m,&n); if(m>=1&&n<=10000){ fib_j = fib(j); while(m>fib_j){ //找到m~n范围内的第一个Fibonacci数,因为m不一定是1 j++; fib_j = fib(j); } while(fib_j<=n){ cnt++; printf("%6d",fib_j); //将m~n内的Fibonacci数输出 if(cnt%10 == 0) printf("\n"); j++; fib_j = fib(j); //更新m~n内的Fibonacci数 } }else{ printf("invalid value\n"); } return 0; } //返回第n项Fibonacci数 int fib(int n){ int x1=1,x2=1,x3,cnt=2; //计算产生的第一个数是Fibonacci的第三项,所以计数从2开始 //Fibonacci数列前两项为1,从第三项起每一项是前两项的和 if(n==1||n==2) return 1; //Fibonacci数列前两项为1 if(n>2){ while(cnt<n){ x3 = x1+x2; //从第三项起每一项是前两项的和 x1 = x2; //更新x1 x2的值 x2 = x3; cnt++; } return x3; } }
#include<stdio.h>
int fibonacci(int n)
{
int i,a=1,b=1,c=1,ri;
for (i = 1; i <= n - 2; i++)
{
c = a + b;
a = b;
b = c;
}
ri = c;
return ri;
}
int main(void)
{
int m, n,i;
printf("please input m,n(1≤m,n≤10 000)");
scanf("%d,%d", &m, &n);
for (i = m; i <= n; i++)
if (fibonacci(i) <= n)
printf("%d,", fibonacci(i));
else break;
return 0;
}