-6

与えられたCコード

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

forループの終了後のjの値は何ですか?

私の本の解決策では、それは次のように始まります。

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

これで、上記のシリーズにlogn項がどのように存在するかを理解できます。

助けてくれてありがとう。

4

2 に答える 2

1

これは、 log2n要素の等比数列の合計です。合計はあなたによって異なりますnが、いずれの場合も。によって制限され2nます。理論はここにあります:http://en.wikipedia.org/wiki/Geometric_progression

于 2012-12-08T15:28:17.123 に答える
0

これはlog2nであり、これはnのバイナリ表現のバイナリビット数(または最上位1ビットのランク)です

そして、あなたはタイプミスをしました、あなたはおそらく意味します

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

したがって、最初はi==n0に達するまで半分にします(したがって、log 2 nループ数)。

于 2012-12-08T15:22:02.387 に答える