Cумма ряда итерационным и рекурсивным способом
Не выходит написать функцию итерационным и рекурсивным способом: 1 + x/1! + (x^2)/2! + ... + (x^n)/n!. Вроде все должно считать правильно, но почему-то выходит совершенно другой результат, когда я проверяю на калькуляторе. Вот само уравнение в целом: e^x = 1 + x/1! + (x^2)/2! + (x^3)/3!... + (x^n)/n! = сумма ряда (x^n) / n! . x Є все числа. Но посчитать должно только то, что в середине.
#include <iostream>
using namespace std;
double recursion_calculate(float x, unsigned n, float res = 1.) {
if (n == 0) {
return 1;
}
res *= x / n;
return res + recursion_calculate(x, n - 1, res);
}
double iteration_calculate(float x, unsigned n) {
float res = 1;
float resultat = 1;
while (n != 0) {
res *= x / n;
resultat += res;
--n;
}
return resultat;
}
int main() {
float x;
int n;
cin >> x;
cin >> n;
if (n < 0)
{
cout << "Error!!!\n\nUse N value from bigest than 0\n";
exit(1);
}
cout << "Recursion result = " << recursion_calculate(x, n) << "\n";
cout << "Iteration result = " << iteration_calculate(x, n) << "\n";
return 0;
}