这个其实和斐波那契数列一样,就是
假设f[i]表示在第i个台阶上可能的方法数。逆向思维。如果我从第n个台阶进行下台阶((跳到n-1的方法数为f(n))),下一步有2中可能,一种走到第n-1个台阶(跳到n-1的方法数为f(n-1)),一种是走到第n-2个台阶(跳到n-1的方法数为f(n-2)),而这两种方式下面又对应n-2,n-3和n-3,n-4个台阶,以此一直递归迭代到最前面。所以f[n] = f[n-1] + f[n-2].

然后我又犯了递归的老毛病,导致run的时候超出运算时间
# -*- coding:utf-8-*-
classSolution:
    def jumpFloor(self, number):
        # write code here
        ifnumber == 1:
            return1
        elif number == 2:
            return2
        else:
            returnself.jumpFloor(number-1) + self.jumpFloor(number-2)

还是要用斐波拉契数列时候学到得,用变量来循环,每次迭代的时候变量会迭代,所以不会占用太多内存
# -*- coding:utf-8-*-
classSolution:
    def jumpFloor(self, number):
        # write code here
        ifnumber == 1:
            return1
        elif number == 2:
            return2
        else:
            Fone = 1
            Ftwo = 2
            fori in range(3, number+1):
                Fn = Fone + Ftwo
                Fone = Ftwo
                Ftwo = Fn
            returnFn