题目描述
一只青蛙一次可以跳上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; }
}