剑指offer10(牛客)--变态跳台阶

题目描述

一只青蛙一次可以跳上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);
    }
};

可以推导放在函数中:

发现不好写。。。

猜你喜欢

转载自blog.csdn.net/m0_37561165/article/details/81216328