public static int test(int N) {
if (N == 1) return 1;
return (3 * (test(N/2) + test(N/2)) + f(N))
}
public static void f(int a) {
for (int i = 1; i <= a; i++)
System.out.println(“algo rocks”);
}
我试图确定CN和上面代码的复杂性
我得出了这个结论
我迷失了3这个功能成倍增加你能检查我的工作并指导我错误的地方。
答案 0 :(得分:1)
你声称C(1)= 0,实际上是1,你错了。
所以,C(1)= 1。
此外,最坏情况下函数f()的时间复杂度为O(N)
,因为N被传递给函数。
所以,你的复发关系结果是:
T(N) = 3 * 2 * T(N/2) + O(N)
= 6 T(N/2) + O(N).
我将离开复发关系供你解决。这很容易。如果您无法计算,请至少尝试一次后在此答案下面ping。