题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
题解
找规律
- 之前写过的青蛙一次只能跳一级或者两级台阶
f(n) = f(n-1)+f(n-2)
- 现在一次可以跳 1~n级台阶
f(n) = f(0) + f(1) + ... + f(n-2) + f(n-1)
- 通过找规律
f(n-1) = f(0) + f(1) + ... + f(n-2)
所以
f(n) = f(n-1) + f(n-1) = 2*f(n-1)
代码:
public class Solution {
public int JumpFloorII(int target) {
if(target < 2) return 1;
return 2*JumpFloorII(target-1);
}
}
非递归解法
public class Solution {
public int JumpFloorII(int target) {
if(target < 2) return 1;
// target = 2的时候,2的1次幂
// target = 3的时候,2的2次幂
// target = 4的时候,2的3次幂
return (int)Math.pow(2, target-1);
}
}