编程之美 2.9 斐波那契数列

解题思路:一种是存储递归过程中已经计算过的值,另一种是通过递推关系式;

这是第二种方法:

F(n) = F(n-1) + F(n-2)

F(n-1) = F(n-2) + F(n-3)

...

F(4) = F(3) + F(2)

F(3) = F(2) + F(1)

F(2) = F(1) + F(0)

可以看出自底向上,每一次求解的两个值都包含在前一次的公式中,用代码写就相当于:

int t;

t = a;

a = a + b;

b = t;

每次只需要用一个临时变量保存第一个值,然后将其做为下一次迭代的第二个值就可以了。

int Fibonacci(int n){
    if (n <= 0)
        return 0;
    else if(n == 1)
        return 1;
    int a = 1, b = 0;
    int tmp;
    while(n >= 2){
        tmp = a;
        a = a + b;
        b = tmp;
        n--;
    }
    return a;
}

 

 

posted on 2012-12-26 17:01  小龙人2012  阅读(310)  评论(0编辑  收藏  举报

导航