你的i和j都是int 型的,所以再用1/j时会自动转化为int型
应该改成s=1.0/j
不过你的算法也有问题吧没有体现出阶乘来啊
是
void main()
{
int i,j=0;
double sum,s=0;
for(i=1;i<=50;i++)
{
n=i;
for(j=i-1;j>0;j--)
{
n=n*j;
}
s=1.0/n;
sum+=s;
}
cout<<"e近似等于"<
没有细推测
这个代码完美运行
#include
using namespace std;
void main()
{
int i,j=0;
double sum=0,s;
for(i=1;i<=50;i++)
{
{
s=1;
for(j=i-1;j>0;j--)
s*=j; //你没有乘法这步,n!=1*2*3*....*(n-1)*n;
#include
using namespace std;
int main()
{
int i,j=0;
double sum=0,s;
for(i=1;i<=50;i++)
{
{
s=1;
for(j=i-1;j>0;j--)
s*=j;
}
s=1/s;
sum+=s;
}
cout<<"e近似等于"<
}
}
s=1/s;
sum+=s;
}
cout<<"e近似等于"<
}
#include
using namespace std;
int main()
{
int i,j=0;
double sum=1,s=0; // sum 从1开始
for(i=1;i<=50;i++){
s=1; // 这里赋值为1
for(j=i;j>0;j--)
s=s*j; // 从1开始乘 ,达到阶乘的目的 。
sum+=1/s; // 对于1到50中的每个i,此时加上i阶乘的倒数。
}
cout<<"e近似等于"<
你的 问题很有问题啊,计算机根本就没法表示,就算是用最长的long double也没法表示1/50!啊,在计算到30几位的时候没法储存啦,
#include
//using namespace std;
void main()
{
long double sum=1.0;long int s=1;
for(int i=1;i<=49;i++)
{
s*=i;
cout< sum+=1.0/s;
cout<
cout<<"e近似等于"<
main函数修改如下(for循环中第二个条件也可改成i<=49)
void main()
{
int i;
double sum=1.0,s=1.0;
for(i=1;i<=50;i++)
{
s/=i;
sum+=s;
}
cout<<"e近似等于"<