美文网首页
剑指Offer-青蛙跳台阶

剑指Offer-青蛙跳台阶

作者: lazydecoder | 来源:发表于2019-04-06 16:34 被阅读0次

    一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

    分析

    因为每次只能跳1或2级,想跳上第n个台阶,必须先跳到第n-1 级或者第n级
    所以F(n) = F(n-1)+F(n-2),类似于斐波那契数列
    这里我犯了一个错误,考虑到在n-2 级,可以选择一次跳两级,也可以选择每次跳1级,跳两次,以为F(n) = 2*F(n-1)+F(n-2),实际上是错误的,因为如果一次跳一级分两次跳的话,跳一级之后到n-1级就是F(n-1) 的情况,不用重复计算,所以只能选择一次跳两级。

    class Solution:
        def jumpFloor(self, number):
            # write code here
            if number == 1 or number == 2:
                return number
            a,b = 1,2
            for i in range(number-2):
                c = a+b
                a = b
                b = c
            return c
    

    相关文章

      网友评论

          本文标题:剑指Offer-青蛙跳台阶

          本文链接:https://www.haomeiwen.com/subject/bvahiqtx.html