题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路:可以使用数学归纳的思维方法,逐渐归纳出规律。
台阶数为1,只有一种跳法。
台阶数为2,两种跳法:{1,1}或{2}
台阶数为3,两种选择:先跳一阶,剩下的有f2种跳法;跳两阶,剩下的有f1种跳法。由加法原理,f3=f1+f2。
…
台阶数为n,两种选择:先跳一阶,剩下的有f(n-1)种跳法;跳两阶,剩下的有f(n-2)种跳法。由加法原理,f(n)=f(n-1)+f(n-2)。
可得,上述方法数是斐波那契数列,故代码如下:
public class Solution {
public static int JumpFloor(int target) {
if(target<=2)
return target;
int jumpOne=1;
int jumpTwo=2;
int jumpResult=0;
for(int i=3;i<=target;i++){
jumpResult=jumpOne+jumpTwo;
jumpOne=jumpTwo;
jumpTwo=jumpResult;
}
return jumpResult;
}
public static void main(String[] args){
int target=10;
System.out.println(JumpFloor(target));
}
}