1

インタビューで次の質問がありました...

Compute the following sum:
1/2 + 1/4 + 1/8 + ... + 1/1048576    

これは論理的な質問であり、彼らはソースコードを探していないと言われましたが、私の答えは次のとおりでした...

    private static double computeSum(){
        double x = 0.0;
        for(double i=2; i<=1048576; i*=2){
            x += (1 / i);
        }
        return x;         
    }

この質問に対する正しい論理的な答えは何ですか?

4

4 に答える 4

11

私はその合計が提示されたので、答えは1 minus the nth termそうだと思います。あなたの場合は

1 - 1/1048576 = 1048575/1048576

私は数学やコードなど何もしません。それが彼らが探していた答えだと思います。

//1/2 + 1/4 = 3/4 = 1 - 1/4;ここで編集

1/2 + 1/4 + 1/8 = 7/8 = 1 - 1/8
于 2012-04-16T11:08:55.397 に答える
3

合計:

1/2 + 1/4 + 1/8 + ... + 1/1048576

と同等です:

(1 + 2 + ... 2 ^ 20) / (2 ^ 20) - 1 =
(2 ^ 21 - 1) / (2 ^ 20) - 1 =
2 - 1 / (2 ^ 20) - 1 =
1 - 1 / (2 ^ 20) ~= 0.99999

シリーズの長さが長くなると、合計は1になる傾向があります。

于 2012-04-16T11:07:55.747 に答える
0

彼らは、非常に無視できる値を持つ分数1/1048576を思い付くまで、分数を足し合わせています。これは、上記の答えが1に非常に近いが、正確には1ではないことを意味します。

于 2012-04-16T11:11:16.380 に答える
0

これは簡単ですconvergent geometric series

  s=a+ar+ar^2+ar^3+... to infinity

したがって、合計は

s=1/(1-r) where in this case r =1/2

ただし、指定されたシリーズは1ではなく1/2で始まるため、saを探しています。

s-a = 1/(1-r) - a = 1/(1-1/2) -1 = 1.

なぜ彼らがそれを問題と呼ぶのかはlogic私にはわかりませんが、与えられた等比数列が収束する理由の説明が必要な場合があります。これは単純な証拠です。つまり、任意の2つの連続する項の比率は1未満の定数です。

于 2012-04-17T00:20:53.070 に答える