一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级。求该青蛙跳上一个n 级的台阶总共有多少种跳法
我们可以多算几次查找规律
n=1时 【1】 一种
n=2时 【11】【2】两种
n=3时【111】【12】【21】三种
n=4时【1111】【22】【112】【121】【211】五种
n=5时【11111】【122】【212】【221】【1112】【1121】【1211】【2111】八种
……
我们发现,它符合斐波那契数列,第n项等于前两项的和,这样的话,我们就知道规律
具体实现代码如下
public class FrogJump {
public static void main(String[] args) {
FrogJump frog=new FrogJump();
System.out.println(frog.jump(2));
}
public int jump(int n){
if(n==1){
return 1;
}
if(n==2){
return 2;
}
else{
return jump(n-2)+jump(n-1);
}
}
}
这是使用递归的方法来实现,但是我们发现,当台阶数过大的时候,计算斐波那契数需要消耗很长的时间。
下面做法是使用非递归来实现
public class FrogJump {
public static void main(String[] args) {
FrogJump frog=new FrogJump();
Syst