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