[剑指offer][Java]跳台阶
2019-06-19 本文已影响0人
Maxinxx
题目
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
程序核心思想
跟斐波那契是一样的思想。可以跳一级也可以跳两级,就说明有两个基线条件。
一个青蛙怎么跳上n级台阶呢?可以从n-1级跳一级上去(这样的跳法的次数跟跳上n-1级是一样的,因为从n-1级跳上n级只能有一种跳法),或者可以从n-2级跳两级上去(这样的跳法的次数跟跳上n-2级也是一样的,因为从n-2级跳上去是一次跳两级。那么有人要问了,从n-2级跳到n级还差两级台阶,为什么不能分两种方式,一种是一级一级跳,一种是一次跳两级呢?因为如果一级一级跳的话,一定会跟前面从n-1级跳上去的一种方法重复,所以只能一次跳两级)。
所以跳上n级台阶的办法就是用跳上n-1台阶的办法数+跳上n-2级台阶的办法数。
Tips
同斐波那契数列,https://www.jianshu.com/p/eaef7b2711fc
代码
public class Solution {
public int JumpFloor(int target) {
if(target == 1){
return 1;
}else if(target == 2){
return 2;
}else{
return JumpFloor(target - 1) + JumpFloor(target -2);
}
}
}