试图找出最好的地方放一个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