泰勒公式求e值――c语言算法实现

2014-11-23 21:37:59 · 作者: · 浏览: 11
题目:
通过泰勒公式的变形: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);  
}  

运行结果: