题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路:
其实这个也很简单,我们可以发现
输入number | 输出re's |
---|---|
0 | 0 |
1 | 1 |
2 | 2(1+1) |
3 | 4(1+2+1) |
4 | 8(1+2+4+1) |
5 | 16(1+2+4+8+1) |
6 | 32(1+2+4+8+16+1) |
7 | 64(1+2+4+8+16+32+1) |
8 | 128(1+2+4+8+16+32+64+1) |
括号内的原因呢,就是n之前的0,1.。。n-1步都推导出来了,现在第n步只需要把1+n-1,2+n-2,3+n-3.。。。依次补步数
最后再加一个一步登天。。。(直接走n步)
所以推导出来就是pow(2,n-1);
class Solution {
public:
int jumpFloorII(int number) {
if( number==0) return 0;
return pow(2,number-1);
}
};
可以推导放在函数中:
发现不好写。。。