代码如下:
Ans = 1;
while( N > 0)
{
Ans = Ans*2;
N = N/2;
}
我无法弄清楚N = N / 2将如何影响运行时。我试图通过检查循环运行的次数来找到一个模式,如果N = 1 ..但我没有注意到任何模式。我想我必须以错误的方式解决这个问题。
答案 0 :(得分:1)
如果你在谈论渐近符号,那么Big-Oh,复杂性将是O(logn)
。计算操作,你会发现它们实际上是基数2的对数。
渐近符号基本上告诉您算法不会比给定的复杂函数运行慢。大多数计算都可以从代码中立即看出,但是在更复杂的算法中,需要计算指令。
答案 1 :(得分:0)
代码的递归等式:
T(n)=T(n/2)+O(1)
Time complexity is O(logn)