给出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术语。
感谢任何帮助,谢谢。
答案 0 :(得分:1)
这是具有 log 2 n 元素的几何系列的总和。总和取决于您的n
,但无论如何都取决于2n
。理论在这里:http://en.wikipedia.org/wiki/Geometric_progression
答案 1 :(得分:0)
log 2 n ,即n的二进制表示中的二进制位数(或最高1位的排名)
你犯了一个错字,你可能意味着
for(i=n,j=0 ; i>0 ; (i/=2), (j+=i));
所以你从i==n
开始,然后将它减半,直到达到0(因此 log 2 n 循环次数。)