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;
}

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