我想計算一個遞歸算法的時間複雜度,我想我已經差不多了。這是我一直在尋找的僞代碼:計算一個Recusive算法的時間複雜度
long pow(long x, int n) {
if (n == 0)
return 1;
if (n == 1)
return x;
if(isEven(n))
return pow(x, n/2) * pow(x, n/2);
else
return x * pow(x * x, n/2);
}
ISEVEN只是決定傳遞給它的整數是否是偶數還是沒有,在這個例子中的點,在固定時間內進行操作。因此,如果n = 0或n = 1,它就運行它,它有恆定的時間操作,如下所示: f(n)= C0。然而,當n> 1時,它應該像這樣操作:當n是偶數並且f(n)= f(n-1)時,f(n)= f(n-1)+ f(n-1)+ C1 )+ n當n是奇數時,是正確的?或者應該是:當n是偶數時,f(n)= f(n/2)+ f(n/2)+ C1,當n是奇數時,f(n)= f(n/2)+1。
我一直在看很多的例子。 Here是我發現非常有幫助的一個。我的問題源於當n是偶數時有兩個遞歸調用 - 我不完全確定在這裏做什麼。如果任何人都可以指出我正確的方向,我會很感激。
請允許我歡迎你們來的StackOverflow,並提醒三件事,我們通常在這裏做的:1)當你得到幫助,儘量給它太**回答問題**你專業2的面積)[`閱讀FAQs` (http://tinyurl.com/2vycnvr)3)當你看到很好的Q&A,投起來[`採用灰色triangles`(http://i.imgur.com/kygEP.png),作爲信譽該系統的基礎是用戶通過分享知識獲得的聲譽。還請記住接受更好地解決您的問題的答案,如果有的話,['通過按複選標記符號](http://i.imgur.com/uqJeW.png) – 2011-02-01 04:24:18
這個新手問題很好。 – sharptooth 2011-02-01 13:00:21