#include <iostream>
#include <cmath>
const double eps=1.0e-4;
using namespace std;
// Рекуррентная формула реализована здесь
// fPrev - предыдущий член ряда A(n)
// n - номер предыдущего члена ряда
// Возвращает A(n+1)
double fNext(double fPrev,size_t& n)
{
double res;
if(n)
{
// A(n+1)=A(n)*(n+1)^2/(n^2*(5*n-2)*(5*n-1)*5*n*(5*n+1)*(5*n+2))
// res=A(n)*(n+1)^2/n^2
res=fPrev*pow(1.0+1.0/n,2.0);
// Далее последовательно делим на (5*n-2),(5*n-1),...,(5*n+2)
for(size_t i=0,div=5*n-3;i<5;++i)
{
res/=++div;
}
}
else
{
// Если n==0(т.е. первый член последовательности)
res=0.5;
}
// Инкрементируем номер члена
++n;
return res;
}
int main()
{
setlocale(LC_ALL,"russian");
// Сумма
double sum=0.0;
// Последний просуммированный член
double last=0.0;
// Счетчик членов
size_t count=0;
do
{
sum+=last=fNext(last,count);
}while(last>eps);// Условие выхода: последний просуммированный не больше требуемой точности
cout<<"Просуммировано членов:"<<count<<endl
<<"Сумма:"<<sum<<endl;
system("PAUSE");
return 0;
}
Просуммировано членов:3
Сумма:0.500794
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.