斐波那契函数的应用

  题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙上一次n级的台阶总共有多少种跳法?

分析:首先考虑最简单的额情况。如果只有1级台阶,那显然只有一种跳法;如果有2级台阶,那就有两种跳法;跳一级再跳一级;一次性跳到第2级;

  接下来讨论一般情况,把n级台阶时的跳法看成是n的函数;记作f(n)。当n > 2时,第一次跳的时候有两种不同的选择:一是第一次只跳1级,此时跳法数目等于后面剩下的n-1级台阶的数目;即为f(n-1); 另一种选择是第一次跳2级,此时跳法数目等于后面剩下的n-2级数台阶数目,即为f(n-2);因此n级台阶的不同跳法的总数f(n)=f(n-1)+f(n-2).

分析到这里,不难看出这实际就是斐波那契数列了;

 1 long long Fibonacci(unsigned n)
 2 {
 3     int result[2] = {0, 1}; 
 4     if(n<2)
 5     {   
 6         return result[n];
 7     }   
 8 
 9     long long fibNMinusOne = 0;
10     long long fibNMinusTwo = 1;
11 
12     long long fibN = 0;
13     for(unsigned int i=2;i<=n;++i)
14     {   
15         fibN = fibNMinusOne + fibNMinusTwo;
16         fibNMinusTwo = fibNMinusOne;
17         fibNMinusOne = fibN;
18     }   
19     return fibN;
20 }
21 ~     

 

posted on 2014-08-14 13:43  阳台  阅读(307)  评论(0编辑  收藏  举报

导航