溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中1+1d/5和1+1/5的區(qū)別有哪些

發(fā)布時間:2021-10-08 13:52:43 來源:億速云 閱讀:135 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹“java中1+1d/5和1+1/5的區(qū)別有哪些”,在日常操作中,相信很多人在java中1+1d/5和1+1/5的區(qū)別有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”java中1+1d/5和1+1/5的區(qū)別有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

目錄
  • java 1+1d/5和1+1/5的區(qū)別

    • 主要區(qū)別就是數(shù)據(jù)類型不同

  • 計算1+1/2!+1/3!+...+1/20!之和

    java 1+1d/5和1+1/5的區(qū)別

    主要區(qū)別就是數(shù)據(jù)類型不同

    1+1d/5的結(jié)果是1.2, 是double類型. 因為1d就是double類型,1d/5結(jié)果自動提升成double類型,1+1d/5結(jié)果也自動提升成double類型. .

    1+1/5的結(jié)果1, 是int類型, 因為1/5是整除(會丟失小數(shù)部分的精度…) . 兩邊操作數(shù)都是int類型. 最后在加上1還是int類型.所以結(jié)果就是int類型.

    java參考代碼如下

    public class Test {
    public static void main(String[] args) {
        double num1 = 1 + 1d / 5;
        System.out.println(num1);//輸出1.2
        int num2    = 1 + 1 / 5;
        System.out.println(num2);//輸出1
     }
    }

    計算1+1/2!+1/3!+...+1/20!之和

    原題:計算1+1/2!+1/3!+…+1/20!之和

    觀察題目,本題難點就是要計算階乘,不妨用一個循環(huán)來計算階乘,再用一個循環(huán)來計算從1/1!到1/20!的和。代碼如下

    package java1;
    public class sum {
       public static void main(String args[]) {
    	   //用s來表示階乘結(jié)果
    	   int s=1;
    	   double sum=0;
    	  //計算1/1!到1/20!的和
    	   for(int i=1;i<=20;i++) {
    		   //分別計算j從1到20的階乘
    		   for(int j=1;j<=i;j++) {
    			   s=s*j;
    		   }
    		   sum+=1.0/s;
    	   }
    	   System.out.println(sum);
       }
    }

    這個輸出結(jié)果為無窮,我當時想半天也沒結(jié)果,后來同學指出我每次算每個數(shù)的階乘時并沒有將重置為1;所以正確代碼如下

    package java1;
    public class sum {
       public static void main(String args[]) {
    	   //用s來表示階乘結(jié)果
    	   double sum=0;
    	  //計算1/1!到1/20!的和
    	   for(int i=1;i<=20;i++) {
    		   //每次算完階乘后,計算下一次階乘時都要將s重置為1
    		   int s=1;
    		   //分別計算j從1到20的階乘
    		   for(int j=1;j<=i;j++) {
    			   s=s*j;
    		   }
    		   sum+=1.0/s;
    	   }
    	   System.out.println(sum);
       }
    }

    正確結(jié)果如下

    java中1+1d/5和1+1/5的區(qū)別有哪些

    可以觀察到上面代碼的時間復雜度為o(n^2),我們其實可以思考一下如何運用優(yōu)化階乘,我這里聽老師說階乘可以運用遞歸思想。代碼如下

    package java1;
    public class sum {
    	//運用遞歸用來計算從1到20分別的階乘結(jié)果
    	public static int JieChen(int i) {
    		   if(i==1) {
    			   return 1;
    		   }
    		   else {
    			   return (JieChen(i-1)*i);
    		   }
    	}
       public static void main(String args[]) {
    	   double sum=0;
    	  //計算1/1!到1/20!的和
    	   for(int i=1;i<=20;i++) {
    		   int s;
    		   //用來計算i的階乘
    		   s=JieChen(i);
    		   sum+=1.0/s;
    	   }
    	   System.out.println(sum);
       }
    }

    運用上面思路不僅可以計算有限的階乘分之一的和,而且我們還可以拓展到計算無限個

    到此,關(guān)于“java中1+1d/5和1+1/5的區(qū)別有哪些”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

    向AI問一下細節(jié)

    免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI