斐波那契函数的应用

  题目:一只青蛙一次可以跳上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 ~     

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值