-6

给定一个 C 代码

for(i=n,j=0 , i>0,i/=2 ,  j+=i)

for循环结束后j的值是多少?

在我书中的解决方案中,它从以下内容开始:

j=n+n/2 +n/4+....+log n terms.

现在我可以理解上述系列中的 log n 术语了。

任何帮助表示赞赏,谢谢。

4

2 回答 2

1

这是具有log 2 n 个元素的几何级数的总和。总和取决于您的n,但无论如何它都以 为界2n。理论在这里:http ://en.wikipedia.org/wiki/Geometric_progression

于 2012-12-08T15:28:17.123 回答
0

它是log 2 n,即 n 的二进制表示中的二进制位数(或最高 1 位的等级)

你打错字了,你可能是说

 for(i=n,j=0 ; i>0 ;  (i/=2), (j+=i));

所以你从开始,i==n然后将它减半,直到达到 0 (因此log 2 n循环数)。

于 2012-12-08T15:22:02.387 回答