int i = 1;
while (i < n/2)
{
i = i * 2;
int j = i;
while (j > 1)
--j;
}
答案 0 :(得分:5)
O(n)
:
外循环在每次迭代中运行logn
次:i = 1,2,4,8,... n / 4(入口值)
内循环运行2*i
次(入口值)
总的来说,你得到:2+4+8+...+n/2 = n-2 = O(n)
答案 1 :(得分:2)
内部循环在第一次迭代时执行两次,然后执行四次,然后执行八次,等等。
所以你需要弄清楚总和的终止位置:
2 + 4 + 8 + ...
然后找出如何评估它(线索:几何系列)。