java中1+1d/5和1+1/5的區(qū)別說明
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é)果如下

可以觀察到上面代碼的時間復雜度為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);
}
}
運用上面思路不僅可以計算有限的階乘分之一的和,而且我們還可以拓展到計算無限個
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Mybatis之a(chǎn)ssociation和collection用法
這篇文章主要介紹了Mybatis之a(chǎn)ssociation和collection用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02
Spring Boot Mysql 數(shù)據(jù)庫操作示例
本篇文章主要介紹了Spring Boot Mysql 數(shù)據(jù)庫操作示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02
關于SpringBoot中Ajax跨域以及Cookie無法獲取丟失問題
這篇文章主要介紹了關于SpringBoot中Ajax跨域以及Cookie無法獲取丟失問題,本文具有參考意義,遇到相同或者類似問題的小伙伴希望可以從中找到靈感2023-03-03
Kotlin中?StateFlow?或?SharedFlow?的區(qū)別解析
Kotlin協(xié)程中的StateFlow和SharedFlow是響應式數(shù)據(jù)流,分別用于UI狀態(tài)管理和事件通知,StateFlow有初始值,只保留最新值,適用于UI狀態(tài)管理;SharedFlow沒有初始值,可以配置緩存大小,適用于事件通知,感興趣的朋友一起看看吧2025-03-03
Java 超詳細圖解集合框架的數(shù)據(jù)結(jié)構(gòu)
什么是集合框架呢?集合框架是為表示和操作集合而規(guī)定的一種統(tǒng)一的標準的體系結(jié)構(gòu)。最簡單的集合如數(shù)組、列表和隊列等,任何集合框架一般包含:對外的接口、接口的實現(xiàn)和對集合運算的算法2022-04-04
Java中關于http請求獲取FlexManager某設備分組監(jiān)控點
這篇文章主要介紹了Java中關于http請求獲取FlexManager某設備分組監(jiān)控點,本文僅僅介紹了使用http請求獲取FlexManager平臺某個FBox盒子即某設備的監(jiān)控點分組的分組下的所有監(jiān)控點信息,需要的朋友可以參考下2022-10-10

