跳台阶

2017-09-16  本文已影响0人  SinX竟然被占用了

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

public class Solution {
     
    //斐波拉契数列
    //递归的方法
    /*
    public int JumpFloor(int target) {
        if(target <= 0) {
            return 0;
        }
        else if(target == 1) {
            return  1;
        }
        else if(target == 2) {
            return 2;
        }
        else {
            return JumpFloor(target -1) + JumpFloor(target - 2);
        }
    }
    */
     
    //方法二:迭代
    /*
     
    */
    public int JumpFloor(int target) {
         
         
        //本质就是一个菲波拉契数列
         
        if(target <= 0)
            return 0;
         
        if(target == 1)
            return 1;
         
        if(target == 2)
            return 2;
         
        int sum = 0;    //sum表示总方法数
        int n1 = 1;     //n1表示从某个台阶跳一次(一个台阶或者两个台阶)到当前阶层,有多少种跳法,初始值为1是表示跳到第3层有1种跳法。
        int n2 = 2;     //n2表示从某个台阶跳一次(一个台阶或者两个台阶)到当前阶层,有多少种跳法,初始值为2是表示跳到第3层有2种跳法。
         
         
        //从第3层开始
        for(int i = 3; i <= target; i++) {
             
            //首先计算跳到第三层的总方法数
            sum = n1 + n2;
            //更新n1,n2,为跳第4层做准备
            n1 = n2;
            n2 = sum;
        }
         
        return sum;
    }
}
上一篇 下一篇

猜你喜欢

热点阅读