劍指Offer 8 跳台階

2021-09-24 15:27:28 字數 699 閱讀 5927

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

思路:

青蛙跳台階是斐波那契數列的抽象,只是初始條件有所不同。當青蛙跳上n級台階時,由於它只能跳一級台階和二級台階,其跳上n級台階只有兩種方式,從n-1級台階跳上來或者從n-2級台階跳上來,那麼跳上n級台階的跳法就是跳上n-1級台階跳法和跳上n-2級台階跳法的和,即f(n) = f(n-1) + f(n-2),其初始條件是跳1級台階有1中跳法,跳2級台階有2種跳法。

n = 1,f = 1

n = 2,f = 2

n > 2,f(n) = f(n-1) + f(n-2)

solution:

python

# -*- coding:utf-8 -*-

class solution:

def jumpfloor(self, number):

# write code here

if number <3:

return number

a,b = 1,2

for i in range(3,number+1):

tmp = a + b

a = b

b = tmp

return b

劍指offer 8 跳台階

題目描述 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 思路 由題可知,青蛙跳台階,跳上n階,可以一階一階的跳,也可以兩階兩階的跳,還可以交叉來。如果函式f n 表示跳到n階的方法,那麼如果最後一次跳一階,則前面有f n 1 種,如果最後是跳2階,則前面有...

劍指Offer 8 跳台階

乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法。coding utf 8 class solution def jumpfloor self,number write code here if number 0 return 0 a 1 b 1 for in...

劍指offer8 跳台階

乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法。假設,一級台階,有f 1 種方法,二級有f 2 種,以此類推,n級有f n 種方法。可以看出,f 1 1 f 2 2。那麼,假設n級台階,那麼第一步就有兩種情況,跳一步,跟跳兩步。情況一 跳一步,那麼接下去的就...