一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级。求该青蛙跳上一个n 级的台阶总共有多少种跳法。
当只有一层台阶时,青蛙当然只有一种跳法;
当有两层台阶时,青蛙可以先跳一层,再跳一层;或者直接跳两层,这是两种跳法;
当有三层台阶时,青蛙可以选择先跳一层,剩下两层台阶,所以此时就是有两层台阶时的跳法,有2种,
当青蛙选择第一次跳两层台阶时,剩下一层台阶,此时时有一层台阶时的跳法,有1种,
所以3层台阶时的方法是:2层台阶的方法 + 1层台阶的方法。
以此类推可以得到:4层台阶 = 3层台阶方法 + 2层台阶方法
.
.
.
n层台阶 = n - 1层台阶方法 + n - 2层台阶方法。
问题迎刃而解。接下来是代码:
//n为台阶数
public static int jumpStep(int n) {
//当n == 1时,返回1
if(n == 1) {
return 1;
}
//当n == 2时,返回2
if(n == 2) {
return 2;
}
//当n > 2时,返回(n - 1) + (n - 2)
return jumpStep(n - 1) + jumpStep(n - 2);
}