斐波那契数列

斐波那契数列

递归思路:

一个递归函数一定可以分解为基础与递归两个部分。而递归部分每次调用都要使其参数向基础部分接近。对于简单的递归函数,基础部分就是if的部分,递归部分就是return部分。

斐波那契数列的函数表示为:

 

其中已知f(1)=1,f(2)=1属于基础部分,f(n) = f(n-1)+f(n-2)属于递归部分。

对应的代码:

 

1 int fib(int N)
2 {
3   if(N == 1 || N == 0)return 1;
4   return fib(N-1) + fib(N-2);
5 }

循环思路:

新的结果result等于旧的result结果加上前一项的值。将结果记为result ,将前一项的值记flag(初始为1) ,即result = flag + result;实现的result的推进。在result推进后,同样对于原来的前一项值flag也要推进。flag要等与旧的result的值。为此我们需要早result没有改变前即result = flag + result;先保留一份result的值记作flag2,在result推进后将将保留的result的值赋给flag,实现flag的推进。

图解:

对应的代码:

int fib_g(int N)
{
    int flag = 1,flag2 = 0;
    int result = 0;
    for(int i=1;i<=N;i++)
    {
        flag2 = result;
        result = flag + result;
        flag = flag2;
    }
​
    return result;
}

 

 

 

posted @ 2021-02-20 20:18  去留意  阅读(27)  评论(0)    收藏  举报