C++运用递归方法求函数

没有什么思路,不知道该怎么运用他给的条件,希望大家能给一下完整的过程讲解😂😂,谢谢😍

img

一般这种精确到小数点后几位,就是说最后一项x^n/n!满足小于该小数时就可以结束递归了,即满足x^n/n!<0.000001结束递归


思路:
观察每一项特征
x0=1=x^0/0!
x1=x=x^1/1!=x0*x/1
x2=x^2/2!=x1*x/2;
...
xn=x^n/n!=(xn-1)*x/n
也就是后一项=前一项乘以x再除以当前的n
所以,设当前项为xk=x^k/k!
则函数可定义为
double exn(double x, int n, double xk) {
    double xkk=xk*x/n; //算出后一项
    if(xkk<0.000001)
        return xk; //如果后一项小于精度则舍去,返回当前项
    return xk + exn(x, n+1, xkk); //否则返回当前项+递归后一项以后的总和
}

//测试
int main(){
    double x=0.5;
    double s = exn(x, 1, 1);//第三个参数1就是当前项第一项
    printf("%.6f\n", s); //打印结果
    printf("%.6f\n", exp(x)); //和系统函数对比
    return 0;
}


#include<iostream>
#include<math.h>
#include<iomanip>
using namespace std;
int main()
{
    double pow(double(x), int(n));
    double x,e(x),sum=1,n;
    cout << "enter e(x)=";
    cin >> n;
    sum = sum + fac(n);
    e(x) = sum;
    cout << "e(x)" << e(x) << endl;
    return 0;
}
int fac(int n)
{
    double sum, x, e(x);
    sum = x*n*n / fac(n);
    if (x*n*n / fac(n) < 0.000001)
    {
        int f = 1;
        for (int n = 1; n++;)
            f = n*(n - 1);
        e(x) = sum + fac(n);
    }
        else
            return e(x);
    }

我写出来的程序是这样,请问能不能帮我改一下错误,我改不好😂,有些用法确实不太会用,谢谢!

img

img

img


这些是出现的一些错误截图,麻烦了