Не могу решить задачу. C++

Результат моим кодом 0.528781 при вводе 1.24 0.0001.

#include <iostream>
#include <cmath>


using namespace std;

int main()
{
   double x, eps, k_1, k, t = 1, factorial = 1;
   cin >> x >> eps;
   cout.precision(6);
   cout << fixed;
   
   k = 1-x; // k -ый элемент 
   while(true) {
      ++t; //счётчик 
      factorial *= t;
      k_1 = pow(x, t)/factorial - pow(x, (t+1))/(factorial*(t+1))  + k; // k+1 -ый элемент
      if (abs(k_1 - k) < eps) {
         cout << k << endl;
         return 0;
      }
      k = k_1;
   }
}

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


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

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

Я уже эти ряды скоро с закрытыми глазами писать буду... :)

double Func(double x, double eps)
{
    double term = 1, sum = term;
    for(int k = 1; abs(term) > eps; ++k)
        sum += term *= -x/k;
    return sum;
}

Функция, вычисляющая ваш ряд для x с точностью eps. Кстати, этот ряд — exp(-x).

→ Ссылка