我在接受采访时得到了以下问题......
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;
}
这个问题的正确逻辑答案是什么?
答案 0 :(得分:11)
我向fi提供了这笔钱,我会说答案是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
答案 1 :(得分: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。
答案 2 :(得分:0)
他们正在将馏分加在一起,直到他们得到一个具有非常微不足道的值的1/1048576。这意味着上述答案将非常接近于1而不是一个答案。
答案 3 :(得分:0)
这是一个简单的convergent geometric series
s=a+ar+ar^2+ar^3+... to infinity
所以总和是
s=1/(1-r) where in this case r =1/2
但是,我们正在寻找s-a,因为给定的系列从1/2而不是1开始。因此
s-a = 1/(1-r) - a = 1/(1-1/2) -1 = 1.
为什么他们称之为logic
问题我不清楚,除了他们可能想要解释为什么给定的几何级数收敛 - 这是一个简单的证明:即任意两个连续项之间的比例是常数小于1。