題目:乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法(先後次序不同算不同的結果)。
輸入:1
輸出:1
輸入:4
輸出:5
思路:一次只有兩種跳法,要麼跳一級,要麼跳兩級,假設 n 級台階一共有 f(n
)f(n)
f(n)
種跳法,那麼最後一次可能是跳了一級也可能是跳了兩級,即 f(n
)=f(
n−1)
+f(n
−2
)f(n) = f(n-1) + f(n-2)
f(n)=f
(n−1
)+f(
n−2)
,可以採用遞迴方法。
# -*- coding:utf-8 -*-
class solution:
def jumpfloor(self, number):
# write code here
if number == 0:
return 1
elif number == 1:
return 1
else:
return self.jumpfloor(number-1)+self.jumpfloor(number-2)
超時,改用迭代的方法寫,從遞迴的出口開始寫,逐步遞增。
# -*- coding:utf-8 -*-
class solution:
def jumpfloor(self, number):
# write code here
if number == 0:
return 1
elif number == 1:
return 1
else:
tmp1 = 1
tmp2 = 1
for i in range(2,number+1):
tmp = tmp1 + tmp2
tmp1 = tmp2
tmp2 = tmp
return tmp
牛客刷題 跳台階
題目 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 天哪,跳台階都不會寫.依稀記得本科離散好像講過這個題,理解了跳台階的原理就很好寫了,如果直接說讓我寫乙個斐波那契數列,那我肯定還是可能寫的.跳台階的話首先知道n 1時,k 1,n...
劍指Offer刷題筆記 跳台階
乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法。首先我們考慮最簡單的情況。如果只有1級台階,那麼顯然只一種跳法。如果有2級台階,那就有兩種跳法 一種是分兩次跳,每次跳1級 另一種是一次跳2級。接著,我們來討論一般情況。我們把n級台階時的跳法看成是n的函式,記...
劍指offer刷題(八)跳台階
乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 本質上是斐波那契數列。記跳n級台階的跳法有 f n 種,如果最後一次跳了兩級,那麼一共的跳法是 n 2 級台階的跳法,即 f n 2 如果最後一次跳了一級,那麼一共的跳法是 n 1 級...