試圖找出最好的地方放一個try catch語句時,遞歸調用放置。階乘計算使用長數據類型完成。當階乘變得太大而不適合長變量時,期望有一個異常被拋出。的try-catch放置在一個Java的遞歸函數調用
但是代碼是表示階乘= 0時它是太大。沒有例外被拋出。那麼是否存在嘗試抓取位置的問題,或者是否將過大的數字引發異常?
class Fact
{
static long fact(long n)
{
if(n==1)
return 1;
return n*fact(n-1);
}
public static void main(String args[])
{
try{
long f = fact(555);
System.out.println("Factorial = "+f);
}
catch(Exception e){
System.out.println("Exception = "+e);
}
}
}
見http://stackoverflow.com/questions/3001836/how-does-java-handle-integer-underflows-and-overflows-and-how:使用伽瑪功能和雙打更好地碼-would-you-check-for – BlackJack
這段代碼是如何編譯的? long方法只在n等於時返回一個值。 – leifg
對不起,每個人當我把它粘貼到SO中時,我都會錯過部分代碼。它現在被添加。 – AruniRC