这道题注意控制精度,我是一个个手动区分的精度,不知道还会不会有什么新的做法
#include <iostream>
#include <iomanip>
using namespace std;
long double f(int i)
{
if(i==0||i==1)
{
return 1;
}
else
{
return (f(i-1)*i);
}
}
int main()
{
cout<<"n e"<<endl<<"- -----------"<<endl;
for(int j=0;j<10;j++)
{
long double m=0;
for(int i=0;i<=j;i++)
{
m=m+(1/f(i));
}
if(j==0||j==1)
{
cout<<j<<" "<<m<<endl;
}
else if(j==2)
{
cout<<j<<" "<<setprecision(1)<<fixed<<m<<endl;
}
else
{
cout<<j<<" "<<setprecision(9)<<fixed<<m<<endl;
}
}
return 0;
}
关于输出精度
https://www.cnblogs.com/wxxweb/archive/2011/05/22/2053930.html
讲的很好