Member 13673284 Ответов: 1

S(n) = (1/1 + 1/2 + 1/3 + 1/4 + ... + 1/н)


Целью части 2 является разработка алгоритма и реализация кода для вычисления суммы рядов обратных связей S(n) = (1/1 + 1/2 + 1/3 + 1/4 + ... + 1/n) таким образом, чтобы ваша программа находила наименьшее число n, для которого сумма рядов обратных связей S(n) равна или превышает значение, введенное пользователем.

Например, если пользователь вводит 1.5, то ваша программа должна отображать следующее:

Наименьшая сумма рядов >= 1.5-это S(2), которая имеет значение 1.5.

Что я уже пробовал:

Я перепробовал все, что знаю, и, похоже, не могу получить правильный результат.

[no name]

Покажи нам свой код. Не стесняйтесь.

1 Ответов

Рейтинг:
2

Andy Allinger

Гармонический ряд имеет большую ошибку округления для больших N. Работает ли ваша программа для N = 10?
Для N = 1,000,000 S = 14,393, и разница между соседними членами может быть меньше округления.
Использовать компенсируется добавлением Алгоритм суммирования Кахана - Википедия[^]
и храните каждый член в массиве S[]. Затем двоичный поиск массива для целевого значения.