я получил следующий вопрос в интервью ...Логика добавления двойных значений
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;
}
Что такое правильный логического ответа на этот вопрос?
У меня такое ощущение, что с использованием удвоений реализовано, вы в итоге получите ровно 1. Конвергенция серии Power в сочетании с ограниченной точностью. Я также добавил тег интервью-вопросов на ваш вопрос. – bdares
да, ответ примерно как 0.99999 – Xerxes
Это конвергентная серия, это сумма - это что-то вроде a0 * (1/q), где a0 - первый элемент последовательности, q = a0/a1. Не помните, на самом деле, это из программы средней школы :), если такая серия (с q = 1/2) бесконечна, ее сумма равна 1. – J0HN