劍指Offer 8 跳台階問題

2021-10-04 19:32:52 字數 702 閱讀 1942

乙隻青蛙一次可以跳上1級台階,也可以跳上2級台階。求該青蛙跳上乙個 n 級的台階總共有多少種跳法。

答案需要取模 1e9+7(1000000007),如計算初始結果為:1000000008,請返回 1

設跳上 n 級台階有 f(n)種跳法。在所有跳法中,青蛙的最後一步只有兩種情況: 跳上 1 級或 2級台階。

f(n)為以上兩種情況之和,即f(n)=f(n-1)+f(n-2),以上遞推性質為斐波那契數列。

本題可轉化為 求斐波那契數列第 n 項的值 ,與 斐波那契數列 等價,唯一的不同在於起始數字不同。

青蛙跳台階問題: f(0)=1 , f(1)=1 , f(2)=2;

斐波那契數列問題: f(0)=0 , f(1)=1 , f(2)=1 。

class

solution

(object):

defnumways

(self, n)

:"""

:type n: int

:rtype: int

"""

a,b=1,

1for i in

range

(n):

a,b=b,a+b

return a%

1000000007

劍指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級台階,那麼第一步就有兩種情況,跳一步,跟跳兩步。情況一 跳一步,那麼接下去的就...