我有遞歸函數:T(n)= 2T(n/2)+ n。我想通過向函數傳遞不同的參數並獲取函數的值來找到函數的複雜性。然後我會猜測函數的公式(例如n,n * log(n))。如何計算遞歸函數的值?
我寫了下面的代碼:
public static void main(String[] args) {
System.out.println(findValueOfTheFunction(2));
System.out.println(findValueOfTheFunction(4));
System.out.println(findValueOfTheFunction(8));
}
static double findValueOfTheFunction(double n) {
if(n > eps) {
return 2*findValueOfTheFunction(n/2) + n;
}
else return 0;
}}
我從代碼三點。 p1(2,10)和p2(4,24)和p3(8,56)。
作爲理解,所述的遞歸函數的複雜性爲O(n)= N *的log(n)。但是我的觀點不符合公式。
我已經在這裏做了一些研究,但似乎沒有人有類似的問題。
你說的'O(N)= N *的log(n)'是什麼意思?大哦表示法不是公式,它是上限 –
算法的複雜性與輸出無關。這是關於獲得輸出需要多少時間。 – 4castle
這個任務聽起來像這樣:「遞歸函數T(n)= 2T(n/2)+ n描述了一些算法,通過找到不同n的函數值,然後猜測公式,找出算法的複雜性。 – Artmal