计算自然对数底e的值

  • Post author:
  • Post category:其他


按下面的公式计算自然对数底e的值(n的值取20)

编写一个java程序jse.java,按下面的公式计算自然对数底e的值(n的值取20):

e=1+1/1!+1/2!+1/3!+1/4!+…1/n!

(

泰勒公式推出来的

e^x≈1+x+x^2/2!+x^3/3!+……+x^n/n!

当x=1时,e≈1+1+1/2!+1/3!+……+1/n!

取n=10,即可算出近似值e≈2.7182818。

)

在java世纪网看到这个面试题

紫竹给出两个程序


public class Test {
public static void main(String args[]) throws Exception {
// 方法1
double e = 1.0;
double t = 1.0;
for (int i = 1; i <= 20; i++) {
t /= i;
e += t;
}
System.out.println(e);
// 方法2,可惜我没看懂,很精妙
e = 0.0;
for (int i = 20; i > 0; i--) {
e = (e + 1.0) / i;
}
e++;
System.out.println(e);
}
}

主要讲方法2

其实这是一个归纳法

e=1+1/1!+1/2!+1/3!+1/4!+…1/n!

其实

1/20!+1/19!+18!

=1/(20*19!)+(1/19!)+1/18!

提出公共项

(1+1/20)*(1/19!)+1/18!

然后分解

1/19!=(1/(19*18!))=1/19*(1/18!)

上面的式子

换成为:=((1+1/20)*1/19+1)*1/18!

换成公式………