0
我有一個問題,我需要幫助。我給出了:如何計算樹中給定算法的節點數量?
int sum(int[] array, int first, int last)
{
if (first == last)
return array[first];
int mid = (first + last)/2;
return sum(array, first, mid) + sum(array, mid + 1, last);
}
問題:確定一個計算遞歸樹中節點數的公式。
所以,我得到的遞歸等式: T(N)= 2T(N/2)+ DN
而且例如用於長度爲8的中遞歸樹的陣列,節點的數目將是15 ,這表明樹中節點的數量是2n-1,其中n是數組的大小。
我想知道我的想法是否正確,並且2n-1公式能否適用於任何情況?另外,有沒有一種通用的方法來計算遞歸樹中給定遞歸算法的節點數?
謝謝你的幫助!
什麼是** dn **,代碼代表什麼代價? – trincot
@trincot ** dn **可能代表加法操作的成本以及函數中的其他一些常量操作。因爲** 2T(n/2)**這個術語是用於遞歸調用的,任何剩餘的操作(比較,** mid **和加法和返回的計算)都需要一定的時間。 T(n)= 2T(n/2)+ c – Shubham
我只是覺得** dn **中出現** n **是可疑的。只是想確保它不依賴於** n **的價值。 – trincot