【发布时间】:2012-03-15 00:41:41
【问题描述】:
我一直在为 Java 使用这个阶乘程序:
public static long factorial(int a) {
if(a<1) {
return 1;
}
long result=1;
long x=a;
while(x>1) {
result*=x;
x--;
}
return result;
}
但是,它似乎“中断”并在 25 的阶乘之后返回一个负数。它返回一个负数一段时间然后只返回“0”。
我做错了什么导致了这个吗?
【问题讨论】:
-
你知道 int 可以容纳的最大数吗?这是你的功课吗?
-
这不是我的作业,这是我有趣的工作:)(我是个极客)。我永远不会为我的家庭作业寻求这样的帮助。我对 int 可以容纳的最大数字一无所知。我会在文档中查找。
-
我的错,意思很长,但无论类型如何,原则都适用,请查看en.wikipedia.org/wiki/Integer_overflow,因为它很好地解释了发生的事情