宝塔服务器面板,一键全能部署及管理,送你10850元礼包,点我领取

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

编写一个java程序jse.java,按下面的公式计算自然对数底e的值(n的值取20):
e=1+ 1/1!+1/2!+1/3!+1/4!+…1/n!

直接看代码吧。2个方法,第一个很好理解,第二个我没看懂,又是算法的能量展示。

[java] view plain copy print ? /**  * 自然对数的底e的计算。<br>  * 1+1/1! + 1/2! + 1/3! + …<br>  *   * @author 老紫竹研究室(laozizhu.com)  */  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);    }  }   /** * 自然对数的底e的计算。<br> * 1+1/1! + 1/2! + 1/3! + …<br> *  * @author 老紫竹研究室(laozizhu.com) */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.7182818284590455
2.718281828459045

 

 

感谢网友提供的第二种方法的解释,我们来看看

写成连分式(下面写前几项)

1
—- + 1
20
————  + 1
    19
——————–  + 1
        18
——————————– + 1
              17

打开后正是
1/1! + 1/2! + 1/3!+…+1/20!               

 

一开始是

1/20

然后是

(1/20+1)/19 =  1/20/19 + 1/19

然乎是

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

。。。

最后就变成了

1/20/19/18/。。。/1 + 1/19/18/17/…. + 。。。

==》

1/20! + 1/19! + 1/18! …..

 

果然精妙。

 

当然,乘法和除法次数和我的第一个算法一样,所以效率上并没有优势。

 

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow