题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

解答:
1.设置一个全局变量time默认为零,模拟跳的过程,当跳到最终台阶的时候time加一。此方法耗时长。
public class Q_8 {

public  int time=0;
public int JumpFloor(int target) {
    Jump(target);
    return time;
}
public void Jump(int target) {
    if(target==1){
        time++;
    }else if(target==2){
        time++;
        Jump(1);
    }else {
        Jump(target-1);
        Jump(target-2);
    }
}

public static void main(String[] args) {
    System.out.println(new Q_8().JumpFloor(3));
}

}

2.类似斐波那契数列
思想:n个台阶的跳法=n-1个台阶的跳法+n-2个台阶的跳法
public class Q_8 {

public int JumpFloor(int target) {
    if(target <= 2){
        return target;
    }
    int pre2 = 1, pre1 = 2;
    for (int i = 3; i <= target; i++){
        int cur = pre2 + pre1;
        pre2 = pre1;
        pre1 = cur;
    }
    return pre1;
}

}