[理工] 資結 時間複雜度

作者: justlike68 (DAY)   2017-08-01 22:09:10
大家好
對不起我問題有點多
先想請問這兩個例題
第一張是題目,第二張鉛筆寫的是我算的
http://i.imgur.com/OWdeXce.jpg
http://i.imgur.com/O169qJD.jpg
想問的是這兩題都沒有給邊界,所以就想說既然例題1是T(n/2)那就代代T(1),但由於程式碼說n=1時會進入else那邊循環,這樣就不知道T(1)是多少了,例題2也是一樣的疑惑,懇請解釋
第二個
http://i.imgur.com/Atm8grf.jpg
不懂的是最後一項 ( lgn - (k-1) )為什麼會等於1呢,不是應該是( lgn - k )才會等於1嗎?還是說為了方便帶公式才加1上去的
作者: sarsman (DeNT15T♠)   2017-08-01 23:15:00
第一個是n!=0時進else,n=0時return 1
作者: justlike68 (DAY)   2017-08-02 07:48:00
謝謝回答! 但我想問的是他的邊界條件是什麼,我是想T(1)是他的邊界條件,但T(1)代入原程式碼中並不等於一個常數,所以不知道big O是多少,謝謝!
作者: nat99up (NAt)   2017-08-02 09:12:00
T(1)可以繼續代下去 通常遞迴除法取floor
作者: justlike68 (DAY)   2017-08-02 09:24:00
請問樓上,那麼T(1)要代什麼值呢,取floor是什麼意思~?
作者: FRAXIS (喔喔)   2017-08-02 11:45:00
第一題 邊界條件是 T(0)第二題 實際上式子表示的是(lgn)-(k-1)然後遞迴 最後一層的 k = lg n,所以就變成 1 了除法要取 floor 也就是只看商數的整數部分 已經有人解釋了

Links booklink

Contact Us: admin [ a t ] ucptt.com