C语言问题新人求解 一道编程题目

输出[m,n]范围内的所有斐波那契(Fibonacci)数,m,n这两个数由键盘输入。
【提示】
1,1,2,3,5,8,13,21,34,……这是斐波那契(Fibonacci)数列的前几项。斐波那契数列的特点:前两项均为1,后面任意一项都是其前面两项之和。
本实验虽然只要求输出在[m,n]范围内的斐波那契数,但是依然需要从第1个Fibonacci数开始依次得到下一个,并判断是否是需要输出的那个。
不i要用太高深的程序,刚开始学

7个回答

 int f(int n)
{
if (n == 1 || n == 2) return 1;
else return f(n - 2) + f(n - 1);
}
int main()
{
int m, n;
scanf("%d %d", &m, &n);
int i = 1;
while (true)
{
int x = f(i);
if (x >= m && x <=n) printf("%d ", x);
if (x >= n) break;
}
}
 #include <stdio.h>
int f(int n)
{
if (n == 1 || n == 2) return 1;
else return f(n - 2) + f(n - 1);
}
int main()
{
int m, n;
scanf("%d %d", &m, &n);
int i = 1;
while (true)
{
int x = f(i++);
if (x >= m && x <=n) printf("%d ", x);
if (x >= n) break;
}
}
 #include <stdio.h>
int fib(int num);
main()
{
 int m,n,i,k;
 printf("Input m: ");
 scanf("%d",&m);
 printf("Input n: ");
 scanf("%d",&n);
 for(i=1;fib(i)<n;i++)
 {
    if(fib(i)>m)
    {
        printf("%d ",fib(i));
    }
 }
}

fib(int num)
{
    int a=1,b=2,c,j;
    if(num==1)
    {
        return 1;
    }
    if(num==2)
    {
        return 2;
    }
    else
    {
        for(j=2;j<=num;j++)
        {
             a+=b;
             c=a;
             a=b;
             b=c;
        }
    return b;
    }
}

//求第N个斐波那契(Fibonacci)数
int func(int n){

 if(n == 1 || n == 2){
          return 1;
     }else{
          return (func(n-2)+func(n-1));//递归,希望你现在理解递归,递归就是函数自己调用自己。
    }

}

int main(){

scanf("%d %d",&m,&n);
    int i = 1;
    int a;
    for(i = 1;i <= n+m;i++){//m最小为1,n最小为2,所以i要循环到n+m,这样可以保证最后一个(i最大时候的一个数)斐波那契(Fibonacci)数大于n,也就保证列举了所有在m到n之间的数
          a = func(i);//求第i个斐波那契(Fibonacci)数
                if(a>=m && a<= n ){
                     printf("%d\n",a);
                }
    }
return 0;

}
头文件省略了。

int main()
{
int m = 0,n = 0,i = 0,num = 0;
scanf("%d",&m);
scanf("%d",&n);
if (m >n)
{
m = m + n;
n = m - n;
m = m - n;
}
for (i = 0; i <= n ;)
{
if( i < 2)
{
num = 1;
i++;
}
else
{
i = num + i;
num = i - num;
}
if ( i > m)
{
printf("%d ",num);
}
}
printf("\n");
}

 int main()
{
        int m = 0,n = 0,i = 0,num = 0;
        scanf("%d",&m);
        scanf("%d",&n);
        if (m >n)
        {
                m = m + n;
                n = m - n;
                m = m - n;
        }
        for (i =  0; i <= n ;)
        {
                if( i < 2)
                {
                        num = 1;
                        i++;
                }
                else
                {
                        i = num + i;
                        num = i - num;
                }
                if ( i > m)
                {
                        printf("%d ",num);
                }
        }
        printf("\n");
}


int f(int n)
{
if (n == 1 || n == 2) return 1;
else return f(n - 2) + f(n - 1);
}
int main()
{
int m, n;
scanf("%d %d", &m, &n);
int i = 1;
while (true)
{
int x = f(i);
if (x >= m && x <=n) printf("%d ", x);
if (x >= n) break;
}
}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问