В общем-то идея верная, только реализация хромает.
Просто перескажу, что нужно сделать.
В задаче дан ряд, к сожалению,я забыл достаточные и необходимые условия схождения, но очевидно, что при n->inf выражение 2*n!/(3n)! стремится к 0. А значит, можно вычислить ряд до некоторой точности, т.е. наступит такой момент, когда при достаточно большом n новое слагаемое будет меньше заданной точности и соответственно не будет менять значение суммы в пределах этой точности.
Теперь нужно определить зависимость между a(n) и a(n+1);
для этого нужно разделить a(n+1) / a(n) = ( 2*(n+1)! / (3(n+1))! ) / ( 2n! / (3n)! )
Ты выделил её верно.
a(n+1) = an * ( (n+1) / ( (3n + 1) * (3n + 2) * (3*n + 3) );
т.е. должен быть такой ряд: 2*1!/3! + 2*2!/6! + 2*3!/9!;
Затем в цикле, меняя n от 1 до бесконечности, пока новое слагаемое больше заданной точности, как только станет меньше, то всё, на сумму в пределах этой точности оно уже не повлияет.
Одну ошибку я заметил только здесь:
n++;
an *= (n + 1.0) / ((3. * n + 1.0) * (3. * n + 2.0) * (3. * n + 3.0));
У тебя n -- выше установлено в 1 и для an ты вычислил a1.
А затем ты вычисляешь новое an т.е. a2, но n увеличиваешь перед этим. И выходит, что ты пропускаешь a2 и вычисляешь сразу a3, и тоже неверно, т.к. умножаешь к a1. Сложно объяснился, но, надеюсь, ты понял. n++ нужно увеличить после вычисления. Либо в формуле везде вместо n использовать (n-1).