题目描述:
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
题解:
- 如果最后一步跳了 1 个台阶,说明之前跳了 n-1 个台阶。已知跳到第 n-1 个台阶的方法数为 f(n-1)。
- 如果最后一步跳了 2 个台阶,说明之前跳了 n-2 个台阶。已知跳到第 n-2 个台阶的方法数为 f(n-2)。
…… - 如果最后一步跳了 n 个台阶,说明之前跳了 0 个台阶。已知跳到第 0 个台阶的方法数为 f(0)。
可推导出公式:
f(n) = f(n-1) + f(n-2) + …… + f(0)
又因为
f(n-1) = f(n-2) + …… + f(0)
所以
f(n) = 2 f(n-1)
public int JumpFloorII(int target) {
if(target == 0 || target == 1){
return target;
}
return 2*JumpFloorII (target-1);
}