我有递归函数: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