程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 算法-為什麼兩個的結果誤差那麼大??

算法-為什麼兩個的結果誤差那麼大??

編輯:編程綜合問答
為什麼兩個的結果誤差那麼大??

package com.sthpu.java1;
/**

  • 求e
  • e=1+1/1!+1/2!+....
  • / public class Practice1 { public static void main(String[] args){ double e=1.0; double a=1.0; for(int i=1;i<30;i++){ a=a/i; e=e+a; } System.out.println("e="+e); } } 輸出結果是:2.71828182845 package com.sthpu.java1; /*
  • e=1+1/1!+1/2!+....
  • */ public class Practice1_1 { public static void main(String[] args){ double e=1.0,a=1.0; //int s=1,n=1,b=0; double s=1.0,n=1.0,b=0.0; while(a>=1e-6){ b=n; while(n>0){ s=s*n; n=n-1; } a=1.0/s; e=e+a; n++; n=++b; } System.out.println(e); } } 輸出結果2.5868345

最佳回答:


你的程序裡無意義的語句太多了。
我用C寫了一遍,你參考一下呢:
結果圖:圖片說明
程序:

    double e=1.0,a=1.0; 
    double s=1.0,n=1.0,b=0.0; 
    while(a>=1e-6) { 
//      b = n; 
/*      while(n>0) {
            s=s*n;
            n=n-1;   Meaningless
        }           */

        a = 1.0/s; 
        e = e + a; 
        n++; 
        s = s * n; //New
    //  n=++b;   Meaningless 
    } 
    printf("e = %f\n",e);  
    return 0;
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved