确定递归函数的 CN 和时间复杂度
Determine the CN and time comlexity for the recurrence function
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 和复杂性
我得出了这个结论
- C1 = 0 --> 终止条件
- CN = 2CN/2 + N
我迷失了这个功能相乘的3,请你检查我的工作并指导我哪里错了。
你声称 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 操作。
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 和复杂性
我得出了这个结论
- C1 = 0 --> 终止条件
- CN = 2CN/2 + N
我迷失了这个功能相乘的3,请你检查我的工作并指导我哪里错了。
你声称 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 操作。