考虑下面的C程序片段,其中i,j和n是整数变量。
for (i = n, j = 0; i >0; i /= 2, j += i);
令val(j)表示在for循环终止后存储在变量j中的值。以下哪一项是正确的?
(A)值(j)= (登录)
(B)值(j)= (sqrt(n))
(C)值(j)= (n)
(D)val(j)= (登录)
(A) A
(B) B
(C) C
(D) D答案: (C)
说明:变量j最初是0,j的值是i的值之和。 i初始化为n,并在每次迭代中减小为一半。
j = n / 2 + n / 4 + n / 8 + .. + 1 =Θ(n)
请注意for循环后的分号,因此主体中没有任何内容。
与https://www.geeksforgeeks.org/c-language-set-6/的问题1相同
这个问题的测验