24小时热门版块排行榜    

查看: 658  |  回复: 4

xin401

铁虫 (小有名气)

[求助] 关于fibonacci数列的一个问题,请教各位大虾!!! 已有2人参与

直接在main函数里实现此功能没有问题,但是利用函数即调用函数Fib如何实现,在Fib函数里不知道对a和b做如何处理,求助!!!
CODE:
/*
        以函数方式实现Fibonacci数列,F(0)=0,F(1)=1,以后各项为其前两项之和
*/
#include <stdio.h>
//int Fib(int i);
main()
{
        int i ,n;
        int a = 0;
        int b = 1;
        int c;
        printf("请输入所要显示的数列个数n:");
        scanf("%d",&n);
        for(i=0;i<n+1;i++){
                if(i == 0||i == 1){
                printf("F(%d) = %d\n",i,i);
                }else{
                        c = a + b;
                        a = b;
                        b = c;
                        printf("F(%d) = %d\n",i,c);
                }
        }
}
/*
int Fib(int i)
{
        int a ,b ,c;
        if(i == 0||i == 1){
                c = i;
        }else{
                c = a + b;
                a = b;
                b = c;
        }
        return(c);
}
*/

[ Last edited by jjdg on 2014-1-17 at 02:36 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

木叶清风

木虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
jjdg: 金币+2, 感谢参与 2014-01-17 02:36:46
xin401: 金币+20, ★★★★★最佳答案, 多谢多谢 2014-01-17 14:59:00
很简单
CODE:
#include <stdio.h>
int Fib(int i);
int main()
{
        int i, n;
        int a = 0;
        int b = 1;
        int c;
        printf("请输入所要显示的数列个数n:");
        scanf("%d", &n);
        for (i = 0; i < n + 1; i++){
                if (i == 0 || i == 1){
                        printf("F(%d) = %d\n", i, i);
                }
                else{
                        c = a + b;
                        a = b;
                        b = c;
                        printf("F(%d) = %d\n", i, c);
                }
        }

        printf("%d\n", Fib(n));

        return 0;
}

int Fib(int i)
{
        int a, b, c;
        if (i == 0 || i == 1){
                c = i;
        }
        else{
                a = 0;
                b = 1;
                for (int j = 2; j <=i; ++j)
                {
                                c = a + b;
                                a = b;
                                b = c;
                }
        }
        return(c);
}

www.cvdelver.com
2楼2014-01-17 00:09:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

戴钢盔的猪头

木虫 (知名作家)

【答案】应助回帖

感谢参与,应助指数 +1
这个数列是用于线搜索的吧?似乎几十年没人用了,现在用的最多的好像是Armijo搜索,简单省事。

[ 发自手机版 http://muchong.com/3g ]
3楼2014-01-17 09:41:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sxu2009

至尊木虫 (正式写手)

递归可能更好想,只是效率比较差:
CODE:
#include <stdio.h>
int main()
{
     int i ,n;
     printf("请输入所要显示的数列个数n:");
     scanf("%d",&n);
     for(i=0;i<n+1;i++)
         printf("%d\n", Fib(i));
     return 0;
}
int Fib(int i)
{
      if(i == 0||i == 1)
          return (1);
      else if(i>=2)  return(Fib(i-1)+Fib(i-2));
}

4楼2014-01-17 10:35:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xin401

铁虫 (小有名气)

引用回帖:
4楼: Originally posted by sxu2009 at 2014-01-17 10:35:24
递归可能更好想,只是效率比较差:

#include <stdio.h>
int main()
{
     int i ,n;
     printf("请输入所要显示的数列个数n:";
     scanf("%d",&n);
     for(i=0; ...

刚刚试了下,一楼正解,呵呵
5楼2014-01-17 15:05:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 xin401 的主题更新
信息提示
请填处理意见