【问题】一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

【思路】昨天有个题目是青蛙只能跳一步或者两步,我们可以使用斐波那契数列,那这次青蛙可以跳上1,2,3,…n级,我们应该如何呢?

不要慌,有了前面的思路我们可以很快知道以下表达式:
f(n) = f(n-1)+f(n-2)+f(n-3)+…+f(n-n) = f(0)+f(1)+f(2)+…...+f(n-1)

而f(n-1)同理可以表示为f(0)+f(1)+…..+f(n-2)

因此f(n)=2f(n-1)并且f(1)=1。因此我们首先使用递归的方法很简单的就可以实现!

class Solution {
public:
    int jumpFloorII(int number) {
        if(number <= 0){
            return -1;
        }
        return 1 << (number-1);
    }
};