有一个没有解决的问题(初学者)

yjl_66 2008-03-14 12:02:54
import java.lang.*;
public class j019
{
int obj=100;
public static void main(String[] args)
{
fac obj=new fac();
System.out.println("100阶乘="+obj.Fac(100));
}
}
class fac
{
public static long Fac(int x)
{
if(x<0)
{
throw new IllegalArgumentException("x must be > =0");
}
if(x>=2)
{
return x*Fac(x-1);
}
else
{
return 1;
}
}
}

这是我编的一个100的阶乘的小程序,经过反复修改,终于编译通过了,但运行结果却是0,不知为什么?请朋友多多指点,在这儿多谢了!
...全文
104 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hmsuccess 2008-03-14
  • 打赏
  • 举报
回复
100阶乘已经超过long 的最大值
wuy13862574600 2008-03-14
  • 打赏
  • 举报
回复
估计是在书上抄的。。
方法名首字符小写,类名首字母大写,楼主的刚好相反!
另外就是楼上所说,注意基本数据类型的表示范围。。。

if(x<0) {...}
else if(x == 1) {...}
else return x*fac(x-1);
cdecbin 2008-03-14
  • 打赏
  • 举报
回复
long 改成double

变更前 public static long Fac(int x)
变更后 public static double Fac(int x) {
awusoft 2008-03-14
  • 打赏
  • 举报
回复
100的阶乘太大了
javatotheworld 2008-03-14
  • 打赏
  • 举报
回复
换成doubole
zjhlht 2008-03-14
  • 打赏
  • 举报
回复
学习ing~~~~~
qiuyangtj 2008-03-14
  • 打赏
  • 举报
回复
同意楼上

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧