Неправильная сумма инверсии при использовании Stream.reduce - PullRequest
0 голосов
/ 11 января 2019

Инверсионная сумма неверна при использовании Stream.reduce, что здесь не так?

double[] array = {1.0, 2.0};
double iunversionSum = Arrays.stream(array).reduce(0.0, (a, b) -> Double.sum(1.0 / a, 1.0 / b));

выход составляет 0,5, но ожидается 1,5 (1/1 + 1/2)

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Ошибка в вашем уменьшении: Double.sum (1.0 / a, 1.0 / b), начиная серию с 0.0. Теперь проверьте, почему ваш результат .5.

Используйте Double.sum (a, 1.0 / b), если вы хотите использовать Reduce.

0 голосов
/ 11 января 2019

Я думаю, что с использованием map() это может быть проще.

double inversionSum = Arrays.stream(arr).map(val -> 1 / val).sum();
...