首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

看看这个关于Fibonacci程序哪里错啦~多谢呦

2012-02-25 
看看这个关于Fibonacci程序哪里错啦~~~谢谢呦#includestdio.h#includemath.hintmain(){intri,repeati

看看这个关于Fibonacci程序哪里错啦~~~谢谢呦
#include   <stdio.h>
#include   <math.h>
int   main(   )
{
    int   ri,repeat;
        int   i,   m,   n;
            long   f;
long   fib(int   n);

    scanf( "%d ",&repeat);
        for(ri=1;ri <=repeat;ri++){
scanf( "%d%d ",   &m,   &n);
  for(i=1;;i++){
    f=fib(i);
    if(f> =m&&f <=n)
        printf( "%ld   ",   f);
    else   if(f> n)
          break;}
       
  printf( "\n ");
}
}

    long   fib(int   n)
        {
            int   i,s;
            if(n==1)
return   1;
            else   if(n==2)
return   1;
            else   if(n> =3)
{for(i=3;i <=n;i++)
    s=fib(i-1)+fib(i-2);}
return   s;}

[解决办法]
int fiboNumber(n)
{
if(n==1||n==2)
return 1;
else return (fiboNumber(n-1)+fiboNumber(n-2));
}

你的fib()函数里面的for循环不知所云(难道是求前n项的和??)
[解决办法]
long fib(int n)
{
int i,s;
if(n==1)
return 1;
else if(n==2)
return 1;
else if(n> =3)
{for(i=3;i <=n;i++)
s=fib(i-1)+fib(i-2);}
return s;}
-----------------------------------------------
去掉for循环就可以了,自己会递归
else if(n> =3)
{
s=fib(i-1)+fib(i-2);
return s;
}

热点排行