Консультация № 173926
02.11.2009, 22:43
0.00 руб.
0 3 2
здравствуйте уважаемые эксперты
на С++ по теме Рекурсия и организация циклов, надо найти сумму ряда с точность Е=10-4 , общий член которого an=10n[$247$]n!

Обсуждение

Неизвестный
02.11.2009, 23:37
общий
это ответ
Здравствуйте, kalim.
Программа C++. MS VC++.
Код:
#include <iostream>
#include <iomanip>
#include <cmath>

using namespace std;

// Точность
const double eps=0.0001;

int main()
{
setlocale(LC_ALL,"russian");
// Суммируем с A1. Если надо с A0, то замените на sum=1.0
double sum=0.0;
// Номер члена
size_t n=0;
// Последний член
double cur=1.0;
do
{
cur*=10.0/++n;
sum+=cur;
}while(cur>eps); // Пока последний просуммированный член больше требуемой точности
cout<<"Сумма:"<<setprecision(static_cast<streamsize>(log10(sum/eps)+1))<<sum<<endl
<<"Количество членов:"<<n<<endl;
system("PAUSE");
return 0;
}

Результат работы:
Код:
Сумма:22025.4658
Количество членов:34
Неизвестный
03.11.2009, 18:48
общий
kalim:
Уточните насчет рекурсии. Для решения такой задачи это извращение. Но в условии есть это слово.
давно
Академик
320937
2216
04.11.2009, 10:10
общий
это ответ
Здравствуйте, kalim. Рекурсивное решение задачи
// Литература:
// Марченко А.И., Марченко Л.А. Программирование в среде
// Turbo Pascal 7.0 - К.: ВЕК+, 2000
// Выполнение действий на рекурсивном спуске, с.171-172


Приложение:
#include <iostream>
#include <cmath>
using namespace std;

// Вопрос 173926
// найти сумму ряда с точностью e=10^(-4), общий член которого a[n]=10^n/n!
//
long double sum(long double s, const long double e, long double a, long n);

int main()
{
long double eps = 0.0001;
cout << "sum(10^n/n!)=" << sum(0,eps,1,0) << ";eps=" << eps << endl;
return 0;
}

long double sum(long double s, long double e, long double a, long n)
{
s+=a;
if (fabs(a)<e)
{
return s;
}
else
{
return sum(s,e,a*10/(n+1),n+1);
}
}
Форма ответа