找到算法的复杂性

时间:2015-10-30 18:59:11

标签: algorithm

大家好我明天有算法分析考试,我在网上发现了这个问题。我试图解决它但我只需要你检查我的解决方案是否正确

 public class t {
      public static void main(String[] args) {
      System.out.println(mystery(7, 6));
      }
      public static int mystery(int a, int b) {
      if (b == 0) return 0; 
      return mystery(a * 2, b / 2) + a;
      }
     }

我的回答: 该算法具有O(logn)的复杂度 因为每次b被加倍一半直到我们到达 终止条件为1。

1 个答案:

答案 0 :(得分:4)

O(log n)错误,因为没有" n"定义

虽然我知道你的意思是复杂性是O(log b),这是正确的,你必须引用正确的变量。否则,假设O(log n)表示O(log a),这将是非常不正确的。

此外,停止条件是b = 0。