请大家看看这个有关sinx泰勒公式的计算

问题遇到的现象和发生背景

img

问题相关代码,请勿粘贴截图
#include<iostream>
#include<cmath>
using namespace std;
double fun(double x,double n);
int main()
{
    double sum=0;
    double x=0;
    double n=1;
    int c=1;
    cin>>x;
    do
    {
        sum+=c*fun(x,n);
        n+=2;
        c=-c;
    }
    while(fun(x,n)>=1e-6);
    cout<<"sinx="<<sum;
    return 0;
}
double fun(double x,double n)
{   
    int outcome=1;
    for(int i=1;i<=n;i++)
    outcome*=i;
    return pow(x,n)/outcome;
}

运行结果及报错内容

运行结果与答案一直对不上

我的解答思路和尝试过的方法

感觉一直对不了,我还想问下为甚double^double的形式为什么会 报错啊

我想要达到的结果

double fun(double x,double n) 中的 int outcome=1; 改成 double outcome=1;


#include<iostream>
#include<cmath>
using namespace std;
double fun(double x,double n);
int main()
{
    double sum=0;
    double x;
    double n=1;
    int c=1;
    cin>>x;
    do
    {
        sum+=c*fun(x,n);
        
        n+=2;
        c=-c;
    }
    while(fun(x,n)>=1e-6);
    cout<<"sinx="<<sum;
    return 0;
}
double fun(double x,double n)
{   
    double outcome=1;
    for(int i=1;i<=n;i++)
    outcome*=i;
    return pow(x,n)/outcome;
}
 

img