面试题10:青蛙变态跳台阶

 

 

 

# -*- coding:utf-8 -*-
class Solution:
    def jumpFloorII(self, number):
        # write code here
        # 先找规律试下
        # number = 1;    1
        # number = 2;    2
        # number = 3;    4
        # number = 4;    8
        # 1,2,4,8,...,2^(n-1)能推理出公式规律
        # 则number = n; 2^(n-1)
        # return pow(2,number-1)
        
        # 方法2:重新反向思考,如果把n级台阶的跳法看成n的函数f(n),则青蛙跳
        # f(n) = f(n-1) + f(n-2) + ...+ f(1)
        # 同理:
        # f(n-1) = f(n-2) + f(n-3) + ... + f(1)
        # 即: f(n) = f(n-1) + f(n-1) = 2f(n-1)
        # 这时候看这个其实比fibnacci公式还要简单
        if number == 1:
            return 1
        a = 1
        temp = 1
        for i in range(1,number):
            temp = 2 * a
            a = temp
        return temp

  

posted @ 2019-07-28 09:49  lililili——  阅读(226)  评论(0)    收藏  举报