题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路
用f(n)表示n级台阶的总共跳法。
第一次:
跳1级,剩下n-1级未跳,剩下的跳法是f(n-1)
跳2级,剩下n-2级未跳,剩下的跳法是f(n-2)
跳n-1级, 剩下1级未跳,剩下的跳法是f(1)
由此可以推出f(n) = f(n-1) + f(n-2) + ...... + f(1)
也可以推出f(n-1) = f(n-2) + f(n-3) + ...... + f(1)
f(n) = 2 * f(n-1)
因此我们也可以推出
f(n-1) = 2 * f(n-2)
f(n-2) = 2 * f(n-3)
......
f(2) = 2 * f(1)
因此最后结果是
f(n) = 2n-1
代码
class Solution {
public:
int jumpFloorII(int n) {
return 1<<(n-1);
}
};
网友评论