討論區快速選單
知識庫快速選單
傑米的攝影旅遊筆記 用最高效的方式管理MySQL 網路投保旅行平安險
[ 回上頁 ] [ 討論區發言規則 ]
關於計算n!的問題
更改我的閱讀文章字型大小
作者 : tomx1412(阿哲)
[ 貼文 31 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/3/26 下午 10:49:59
最近在做練習題 其中一題是 使用者輸入N 輸出N!
N宣告為int
如果輸的N<0 則輸出N不得為0
如果N!大於 int 的範圍2147483647就輸出無法計算

小弟寫的程式不之哪裡錯了 從1!到12! 都輸出正常 13!開始就輸出錯誤 15!已經溢位了 應該輸出 無法計算
可是卻輸出2004310016 我用計算機算 答案也是錯的

下面是小弟的程式
     public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n,m,sum=1;
System.out.print("n=");
n=sc.nextInt();
m=1;
if(n<0){

System.out.print("且輸入0或正整數,且不超過2147483647");

}

if(sum>2147483647){

System.out.print("n!過大,無法計算");
}

while(m<=n){

sum=sum*m;


m++;


}
  
System.out.print("n!="+sum);

}
    
請各位大大幫小弟看看哪裡邏輯錯了 感恩


作者 : sflam(Raymond)討論區板主 Visual C++ .NET卓越專家VC++一代宗師新手入門優秀好手資訊類作業求救頂尖高手C++一代宗師貼文超過4000則
[ 貼文 4945 | 人氣 9172 | 評價 32290 | 評價/貼文 6.53 | 送出評價 142 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/3/26 下午 11:02:56
> if(sum>2147483647){

'sum' 是 int. 既然 int 的最大值已是 2147483647, sum > 2147483647 怎麼可能會發生?

你不覺得在邏輯上這已有矛盾嗎?

作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4468 | 人氣 37262 | 評價 10860 | 評價/貼文 2.43 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/3/27 上午 09:08:23
http://stackoverflow.com/questions/3001836/how-does-java-handle-integer-underflows-and-overflows-and-how-would-you-check-fo

作者 : joe8099x(joe8099x)
[ 貼文 13 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 8 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/3/27 下午 09:19:04
看起來是邏輯上有問題
因為你先判斷後計算

再來是判斷超出邏輯上的問題
因為int最大是2147483648
所以12!沒超過13!就超過了
你想要超過應該要列出超過
但sum自己不會知道自己超過了<-重點是這個
解答在 ozzy123所提供的連結媕Y
我也是初學者
看了半個多小時才看出問題
謝謝你的問題,又讓我學到了我不會的問題
感恩感恩
 板主 : 風月
 > Java入門一般區 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Java入門一般區 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Java入門一般區
1 洋將 2410 
2 Aron 2130 
3 Aries 1510 
4 DEMO999 1310 
5 Ben 990 
6 ramb 620 
7 ozzy 570 
8 tand 460 
9 Huah 410 
10 vindy 400 
Java入門一般區
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
0.03125