2015-11-03 187 views
0

enter image description here T(N)= N + T(N/2)計算遞推關係T(N)= N + T(N/2)

= N + N/2 + T(N/4)

= N + N/2 + N/4 + T(N/8)

= N + N/2 + N/4 + ... + N /(2 ^(K- 1))+ T(N/2^k)的

- >>>

,我不知道如何克o上得到大哦公式。 請幫我

+0

我投票結束這個問題作爲題外話,因爲它不是一個編程問題。嘗試http://math.stackexchange.com – Matt

回答

1

我假設有一些初始條件,如T(1) = 0,你不告訴我們。

如果是這樣,答案是O(log n)

想想你將如何制定出T(2)T(4)T(8)T(16)等每個人只需要一個額外的步驟。

T(1) = T(2^0) calls the method recursively 0 times. 
T(2) = T(2^1) calls the method recursively 1 time 
T(4) = T(2^2) calls the method recursively 2 times 
T(8) = T(2^3) calls the method recursively 3 times 

換句話說,步數是功率。這意味着你必須取對數來得到答案。

+0

嗯我不知道T(1)= 0但是當我考慮「調用」它是有道理的,我使用數學計算來解決它,但我得到O(n )我現在確定它爲什麼是O(log n)。我會發布我的計算 – IAMBEAST

+0

但T(n)不僅是關於多少次調用遞歸調用..我猜 – IAMBEAST

+1

@IAMBEAST你是對的,它不是,但在這種情況下,它是相同的,因爲唯一的其他操作是加法,即'O(1)'。您的計算有兩種方法。首先,你似乎對是否正在研究'T(n)'或時間複雜性感到困惑。其次,你不能使用和的幾何序列的無窮大 - 大概'n'是一個整數,而不是一個可以任意多次減半的實數。 –

相關問題