【问题标题】:finding analytics time complexcity using recursive使用递归查找分析时间复杂度
【发布时间】:2022-06-22 16:23:13
【问题描述】:

谁能帮我解决这个问题?

【问题讨论】:

  • O(log(z)) 在每个递归调用中将z 除以2

标签: algorithm time-complexity


【解决方案1】:

让我们看看。有一个方法(让它成为 C#)

static int Mult(int y, int z) {
  if (z == 0)
    return 0;
  else if (z % 2 != 0)
    return Mult(2 * y, z / 2) + y; // Note z / 2
  else
    return Mult(2 * y, z / 2);     // Note z / 2
}

我们可以看到,在每个递归调用中,我们z除以2,例如

 Mult(7, 10) ==
 Mult(14, 5) == 
 Mult(28, 2) + 14 == 
 Mult(56, 1) + 14 + 56 == 
 Mult(112, 0) + 14 + 56 == 
 
 0 + 14 + 56 == 70 # multipliction indeed: 7 * 10 == 70

注意z如何变化:10 -> 5 -> 2 -> 1 -> 0,所以递归调用的次数是log(z),我们有O(log(z))的时间复杂度。

【讨论】:

    猜你喜欢
    • 2020-09-19
    • 2014-04-02
    • 1970-01-01
    • 1970-01-01
    • 2017-05-29
    • 1970-01-01
    • 2022-10-25
    • 2018-07-23
    • 1970-01-01
    相关资源
    最近更新 更多