1. 程式人生 > >劍指offer_第8題_跳臺階

劍指offer_第8題_跳臺階

題目描述

  • 一隻青蛙一次可以跳上1級臺階,也可以跳上2級。
  • 求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)

理解

  • 完全蒙啊
  • 那我們就用特例先分析一下
    如果有1級臺階,那有1種
    如果有2級臺階,那有2種
    如果有3級臺階,那一定是先跳1級或者先跳2級,再跳到3級臺階上,跳1級後有2種,跳2級後有1種,共有3種跳法
  • 如果是n級臺階呢,假設有F(n)種跳法,那一定也是先跳1級或者先跳2級,再繼續跳到n級臺階,跳1級後有F(n-1)種,跳2級後有F(n-2)種,故有F(n)=F(n-1)+F(n-2)
  • 可以發現本質上就是斐波那契數列問題

解題思路

和斐波那契數列寫法一樣
思路1

class Solution:
    def jumpFloor(self, number):
        if number == 1:
            return 1
        elif number == 2:
            return 2
        else:
            a = 1
            b = 2
            for i in range(2,number):
                a,b = b,a+b
            return b

或者

class Solution:
def jumpFloor(self, number): a=[1,2] if number<=2: return a[number-1] else: for i in range(2,number): a.append(a[i-1]+a[i-2]) return a[number-1]