剑指Offer刷题笔记,方便以后查看。
刷题平台:牛客网
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上 n n n 级。求该青蛙跳上一个 n n n 级的台阶总共有多少种跳法。
题目分析
该题目可以使用数学归纳法去求解。
我们将
n
n
n 阶台阶的跳法看成
n
n
n 的函数,即
f
(
n
)
f(n)
f(n)。
n | 不同的跳法 | 总共的跳法 |
---|---|---|
n=1 | 1 | 1 |
n=2 | 1,1;2; | 2 |
n=3 | 1,1,1; 1,2; 2,1; 3 | 3 |
n=4 | 1,1,1,1; 1,2,1; 1,1,2 ;2,1,1; 2,2; 4 | 1 |
… | … | … |
n=k | … | f ( n ) = 2 f(n)=2 f(n)=2^ ( n − 1 ) (n-1) (n−1) |
代码实现
class Solution {
public:
int jumpFloorII(int number) {
if(number<=0)
return 0;
int result =1;
// 循环实现,这里要注意i<=number-1或者i<number;
// for(int i=1;i<=number-1;i++){
// result = result*2;
// }
// 直接调用公式实现
result = pow(2,(number-1));
return result;
}
};