Рекуррентная формула, описание в основной части

необходимо вычислить значение суммы членов бесконечного ряда с заданной точностью. Определить число членов ряда, вошедших в сумму. Контрольное задание на картинке 8(10^-4 - точность вычисление, а s - сумма членов, s1 - член, который вычисляется по рекуррентной формуле)

#include

#include <math.h> using namespace std;

int main() {

setlocale(LC_ALL, "Russian");
float s1 = 1, s = 0, eps = 0.0001;
int n = 1;

do {
    s1 *= n / ((3 * n) + 3);
    s += s1;
    n++;
} while (abs(s1) > eps);

cout << "s = " << s << endl;

cout << "Количество слагаемых = " << n << endl;

} введите сюда описание изображения


Ответы (2 шт):

Автор решения: Harry

Ну, примерно так...

float s1 = 1, s = 0, eps = 0.0001;
int n = 2;
for(;s1/n > eps; n++)
{
    s += (s1 /= 3)/n;
}

Формально вместо s1/n > eps надо s1/(n-1) > eps, но вряд ли это принципиально...

→ Ссылка
Автор решения: Владимир

Спасибо за ответы, код сработал после того, как в 14 строке после каждого цифры добавил точку. Рабочий код:

#include #include <math.h>

using namespace std;

int main() {

setlocale(LC_ALL, "Russian");
double s1 = 1, s = 0, eps = 0.0001;
int n = 1;

do {
    s1 *= n / ((3. * n) + 3.);
    s += s1;
    n++;
} while (s1 / (n - 1) > eps);

cout << "s = " << s << endl;

cout << "Количество слагаемых = " << n << endl;

}

→ Ссылка