一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
和跳台阶相比,这种确实很变态。依然是找规律。
f(1) = 1;
f(2) = 2;
f(3) = f(2)+f(1) + 1;
f(4) = f(3)+f(2)+f(1)+1;
....
f(n) = 2 * f(n-1)
最后发现得到的结果很简单。
public int JumpFloorII(int target) {
int first = 1;
int third = 0;
if(target == 1){
return first;
}
for(int i = 2; i <= target; i++){
third = first * 2;
first = third;
}
return third;
}