问题描述
e的一个简单的数学公式
其中n允许取无穷大, 这实际上可以使用相对小的n值产生非常准确的e近似值。
输出
输出由上述公式生成的e的近似值,n的值从0到9.输出的开头应该类似于下面显示的。
示例输出
n e
- -----------
0 1
1 2
2 2.5
3 2.666666667
4 2.708333333
1 #include <iostream> 2 #include <cstdio> 3 4 using namespace std; 5 6 double fac(int x) 7 { 8 int f; 9 if(x==0||x==1) 10 { 11 f=1; 12 } 13 else 14 { 15 f=x*fac(x-1); 16 } 17 return(f); 18 } 19 20 double ans(int n) 21 { 22 int i; 23 double s=0; 24 for(i=0;i<=n;i++) 25 { 26 s+=1/(fac(i)); 27 } 28 return s; 29 } 30 31 int main() 32 { 33 34 int i; 35 printf("n e "); 36 printf("- ----------- "); 37 printf("0 1 "); 38 printf("1 2 "); 39 printf("2 2.5 "); 40 for(i=3;i<=9;i++) 41 printf("%d %.9lf ",i,ans(i)); 42 return 0; 43 }
这题要注意的是n为0,1和3时候的精确度,分别输出。