找到CN和时间复杂性

时间:2015-11-01 10:25:34

标签: algorithm asymptotic-complexity recurrence

通过我对复发的研究,我试图解决这种复发 你可以帮我查一下吗

public static int java(int N) {
  if (N == 1) 
    return 1; 
  return (java(N/2) + java(N/2)); 
}

我认为这是等式

C(1) = 1
CN = 2CN/2 + 1

,复杂度为O(log N)

你可以帮我查一下吗

1 个答案:

答案 0 :(得分:2)

public static int java(int N) {
  if (N == 1) 
    return 1; 
  return 2 * java(N/2); 
}

不是两次调用相同,而是将它乘以2.不需要为同一输入再次计算它。

复杂性为O(log N),因为您每次都将问题除以2因子。