Java

Напишите на Java

Вот так суммируем ряд:
 public class Main {
public static void main(String[] args) {
final double EPS = 1e-4;
double a = 1.0; // a₀
double sum = a;
long n = 1, nn = 3;
while(a >= EPS) {
n++; nn += 3;
a /= (nn - 1) * (nn - 2);
sum += a;
}
System.out.println(sum);
}
}
Нулевой член ряда (= 1) сразу закладываем в сумму.
Каждый последующий (n-й) член ряда получается умножением предыдущего на 3 и на n и делением на недостающие три множителя факториала (3n). Но поскольку множитель 3n входит и в числитель, и в знаменатель, мы только делим на (3n - 1) и (3n - 2).
И так - пока член ряда не станет меньше точности.
Строго говоря, точность для знакопостоянных рядов измеряется немного по-другому (требуется найти ограничение сверху для всей оставшейся суммы), но ряд убывает настолько быстро, что это не особо важно. Можно ограничить, например, таким выражением:

∑ aₘ ≤ 1.665 ∙ aₙ
m=n+1
(1.665 - это округлённая в большую сторону сумма ряда обратных квадратов, который ограничивает сверху наш ряд).
Тогда точность надо записать примерно так:
 final double EPS = 1e-4 / 1.665; // примерно 6e-5 
А в остальном - ничего не поменяется.
([{Вестник Тьмы}]) ([{Вестник Тьмы}])
([{Вестник Тьмы}]) ([{Вестник Тьмы}])
54 053
Лучший ответ
Денис =))) ну и почему там в условии >=, а не просто > ?
если уже равенство, значит заданная точность достигнута...
перечитывай за своим вонючим ИИ