2

任意の数字 x から 0 までの 2 の累乗を合計する必要があります。x=6 の場合、必要な合計は 2pow6+2pow5+.....1 です。Math.pow を使用して 0 まで下げるアルゴリズムをいつでも作成できますが、この関数はループでのパフォーマンスに関して悪名高いようです。シフト二項演算子を使用して同じことを達成するのを手伝ってくれる人がいれば幸いです - pow よりもはるかに効率的だと聞きました。

4

2 に答える 2

11

2^n + 2^(n-1) + 2^(n-2) + ... + 2 + 1 = (2^(n+1) - 1) =((1 << (n+1)) - 1)

于 2013-04-15T14:15:30.800 に答える
6

ループで計算する必要はありません。計算しようとしているものは

Math.pow(2, x+1) - 1

さらに良いことに、torquestomp が提案したように計算できます。これはより高速になります。

(1 << (x + 1)) - 1
于 2013-04-15T14:15:01.577 に答える