《阶乘公式求值》运行错误求解

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

img

问题相关代码,请勿粘贴截图
#include<iostream>
#include<iomanip>
using namespace std;
double fact(int n)
{
    int t = 1;
    for (int i = 1; i <= n; i++)
    {
        t *= i;
    }
    return t;
}
int main()
{
    int n;
    cin >> n;
    double sum = 0;
    for (int i = 1; i <= n; i++)
    {
        sum += 1 / fact(i);
    }
    cout << setiosflags(ios::fixed) << setprecision(5) << std::fixed << "sum=" << sum << endl;
    return 0;
}

运行结果及报错内容

img

我的解答思路和尝试过的方法
我想要达到的结果

想知道哪里出问题了

修改见注释处,供参考:

#include<iostream>
#include<iomanip>
using namespace std;
double fact(int n)
{
    double t = 1;  //int t = 1;
    for (int i = 1; i <= n; i++)
    {
        t *= i;
    }
    return t;
}
int main()
{
    int n;
    cin >> n;
    double sum = 0;
    for (int i = 1; i <= n; i++)
    {
        sum += 1.0 / fact(i);  //sum += 1 / fact(i);
    }
    cout << setiosflags(ios::fixed) << setprecision(5) << std::fixed << "sum=" << sum << endl;
    return 0;
}

img

将sum += 1 / fact(i);改为sum+=1.0/fact(i)即可。

以上仅供参考,如有任何疑问,可以评论回复,看到即回。
希望对题主有所帮助!可以的话,点个采纳!