1和2不知道为什么有时会不一样,明明只是名字变了变。
思路两个
1.
求出阶乘。
1/阶乘。
求和。
2.
1/n!=1/(n-1)/n;
后一项的阶乘等于前一项除以后一项的标码。
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
int main()
{
printf("1.");
double e=1.0,term;
int n,count=1;
long fac=1;
for(n=1;fabs(term)>=1e-5;n++)
{
fac=fac*n;
term=1.0/fac;
e=e+term;
count++;
}
printf("%f %d\n",e,count);
printf("2.");
double e0=1.0,term0;
int n0,count0=1;
long j=1;
for(n0=1;fabs(term0)>=1e-5;n0++)
{
j=j*n0;
term0=1.0/j;
e0=e0+term0;
count0++;
}
printf("%f %d\n",e0,count0);
printf("3.");
int n1=1;
double e1=1.0,term1=1.0;
do{
term1=term1/n1;
e1=e1+term1;
n1++;
}while(fabs(term1)>=1e-5);
printf("%f %d\n",e1,n1);
printf("4.");
int n2=1;
double e2=1.0,term2=1.0;
while(fabs(term2)>=1e-5)
{
term2=term2/n2;
e2=e2+term2;
n2++;
}
printf("%f %d\n",e2,n2);
printf("5.");
int n3=1;
double e3=1,term3=1;
while(fabs(term3)>=1e-5)
{
term3=term3/n3;
e3=e3+term3;
n3++;
}
printf("%f %d",e3,n3);
return 0;
}