题目:
通过泰勒公式的变形:e = 1 + (1/1!) + (1/2!) + (1/3!) + … + (1/n!) (1/n! >= 10^-7)来求e的值
解析:
我们在看到由1到n的阶乘的时候第一反应肯定是用循环,而n!似乎有点碍事,我刚开始做的时候为了避开这个麻烦就构造了一个函数专门来求n!
这样看似简单,实际反而却麻烦,下面分别贴上两种方法:
构造函数法:
#include "stdio.h"
void main()
{
double e = 1.0;
int n = 1;
for (;(1.0/(double)jc(n)) >= (1e-7);n++)
{
e += 1.0/(double)jc(n);
}
printf("%lf\n",e);
}
int jc(int a)
{
int re = 1.0;
for (;a > 0;a--)
{
re *= a;
}
return re;
}
直接法:
#include "stdio.h"
void main()
{
double e = 1.0; //定义e的初始值
double jc = 1.0; //阶乘
int n = 1;
for (;1/jc >= 1e-7;n++)
{
jc *= n; //求n的阶乘
e += 1/jc;
}
printf("e的值为:%lf\n",e);
}
运行结果: