变态跳台阶
描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
代码
public class Solution {
public int JumpFloorII(int target) {
if (target == 0 || target == 1)
return target;
int result = 1;
while (target > 1) {
result = 2 * result;
target--;
}
return result;
}
}
思路
- 本题是 跳台阶 的扩展,需要找一下规律或者做一下数列的求解;
- f(1)=1, f(2)=2, f(3)=4, f(4)=8, … 有点
f(n)=2^(n-1)
意思; - 可以分析:
f(n)=f(n-1)+f(n-2)+f(n-3)+...+f(2)+f(1)+1
,而f(n-1)=f(n-2)+f(n-3)+...+f(2)+f(1)+1
,代入得f(n)=2f(n-1)
,从而f(n)=2^(n-1)
。