达到给定的精度1e-6

来源:百度知道 编辑:UC知道 时间:2024/05/28 02:02:28
e=1+1/1!+1/2!+1/3!++....++1/(n-1)!+1/n! 给定精度:le-6
本人编写的如下程序,思路没问题,有待改变的就是精度算法,请勿误解。

#include "stdio.h"
void main()
{
double n=1;
double e=1;
double fs(double );
while(1)
{
e+=1/fs(n);
n++;
if((1e+6)*e<(1e+8))/*精度算法*/
break;
else
continue;
}
printf("%e\n",e);
getch();
}
double fs(double x)
{
double f=1;
while(x!=0)
{
f*=x;
x--;
}
return(f);
}


if((1e+6)*e<(1e+8))/*精度算法*/
这句话很有问题,才运算一次就退出了.
改为if(1/f(n)<1e-6)break;

修改如下:
#include "stdio.h"
#include "conio.h"

void main()
{
double n=1;
double e=1,temp;
double fs(double );
while(1)
{
temp=1/fs(n);
if(temp<1e-8)
break;
else
{
e+=temp;
n++;
}
}
printf("%lf\n",e);
getch();
}

double fs(double x)
{
double f=1;
while(x!=0)
{
f*=x;
x--;
}
return(f);
} //结果应该是正确的