剑指Offer------跳台阶

来源:互联网 发布:淘宝网的用户体验 编辑:程序博客网 时间:2024/06/05 15:35

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

<分析>:1.假设当有n个台阶时假设有f(n)种走法

               2.青蛙最后一步要么跨1个台阶要么跨2个台阶。

               3.当最后一步跨1个台阶时即之前有n-1个台阶,根据1的假设即n-1个台阶有f(n-1)种走法

               4.当最后一步跨2个台阶时即之前有n-2个台阶,根据1的假设即n-2个台阶有f(n-2)种走法

               5.显然n个台阶的走法等于前两种情况的走法之和即f(n)=f(n-1)+f(n-2)------------斐波那契数列

               6.当n=1时,f(1)=1,当n=2时f(2)=2

                          1(n=1)

                f(n)=  2(n=2)

                          f(n-1)+f(n-2)    (n>2)

                          n为整数

/** *  * @author zy * @date 2017年10月3日 上午9:40:25 * @Decription 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 */public class Jump {public int JumpFloor(int target){int fn1 = 1;int fn2 = 2;if (target <= 0) {return 0;}else if (target == 1) {return 1;}else if (target == 2) {return 2;}while(target > 2){fn2+=fn1;fn1 = fn2 - fn1;target--;}return fn2;}}