乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法(先後次序不同算不同的結果)。
這是一道經典的遞推題目,你可以想如果青蛙當前在第n級台階上,那它上一步是在**呢?
顯然,由於它可以跳1級台階或者2級台階,所以它上一步必定在第n-1,或者第n-2級台階,也就是說它跳上n級台階的跳法數是跳上n-1和跳上n-2級台階的跳法數之和。
設跳上 i
ii 級台階有 f(n
)f(n)
f(n)
種跳法,則它跳上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)
種跳法。
然後,我們又思考初始(n−2
≤0
n-2\leq0
n−2≤
0)的情況,跳上1級台階只有1種跳法,跳上2級台階有2種跳法,最終我們得到如下的遞推式:
f (n
)=
1&, \text \\ 2 &,\text \\ f(n-1) + f(n-2) &,\text \end
f(n)=⎩
⎪⎨⎪⎧
12f
(n−1
)+f(
n−2)
,n=1,
n=2,
n>2
這個遞推式和 fib
onac
ci
fibonacci
fibona
cci比較相似,這裡就簡單寫常用的兩種實現方式,詳情可以參考上篇部落格解法:斐波那契數列(四種解法)。
方法一:
面試別寫型遞推版實現,時間複雜度 o(2
n)
o(2^n)
o(2n)。
public
class
solution
}
方法二:
面試推薦型,自底向上型迴圈求解,時間複雜度為 o(n
)o(n)
o(n)
。
public
class
solution
return a;
}}
如果本文對你有所幫助,要記得點讚哦~ 劍指offer 08 跳台階
乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 於本題,前提只有 一次 1階或者2階的跳法。a.如果兩種跳法,1階或者2階,那麼假定第一次跳的是一階,那麼剩下的是n 1個台階,跳法是f n 1 b.假定第一次跳的是2階,那麼剩下的是...
劍指offer 08 跳台階
題目描述 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 時間限制 c c 3秒,其他語言6秒 空間限制 c c 64m,其他語言128m 題目示例 示例1 輸入 1 返回值 1 示例2 輸入 4 返回值 5解法分析我記得這好像是一...
牛客 劍指offer 08 跳台階
乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 跳上1級台階 1種 跳上2級台階 2種 跳上3級台階 跳上n級台階 即 f n f n 1 f n 2 看到這裡你肯定會發現這其實就是 斐波那契數列 的變種,不了解的可以看我這篇文章 ...