乙隻青蛙一次可以跳上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級台階,那麼第一步就有兩種情況,跳一步,跟跳兩步。情況一 跳一步,那麼接下去的就...