「劍指Offer」裏的經典題目,近期羣裏聊到這題,特來複習一波。python
一隻青蛙一次能夠跳上 1 級臺階,也能夠跳上 2 級臺階。求該青蛙跳上一個 n 級的臺階總共有多少種跳法。code
首先跳到 n 級臺階能夠分解爲兩種狀況:class
所以 n 級跳法數量,等於這兩種狀況之和。
即 F(n) = F(n-1) + F(n-2)
co
同理可繼續推導:
F(n-1) = F(n-2) + F(n-3)
F(n-2) = F(n-3) + F(n-4)
...
F(2) = F(1) + F(0)
F(1) = 1
F(0) = 1
block
可見這是斐波那契數列,數列中從第三個數開始,每一個數都是前兩個數之和。那麼只需從 F(0) + F(1) = F(2)
開始計算,一直加到 F(n)
便可得出結果。return
func JumpFloor(n int) int { a, b := 1, 1 for ; n > 0; n-- { a, b = b, a + b } return a }
def jump_floor(n): a, b = 1, 1 for _ in range(n): a, b = b, a + b return a