劍指Offer 08 跳台階(遞推)

2021-10-03 06:47:56 字數 1267 閱讀 6024

乙隻青蛙一次可以跳上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 看到這裡你肯定會發現這其實就是 斐波那契數列 的變種,不了解的可以看我這篇文章 ...