一般的算法,求到二十几的阶层值就会是负数
------解决方案--------------------
应该是长度溢出
------解决方案--------------------
为什么出现负数,是因为你定义的数据类型长度不够导致的。
java 中 int 长度 2^-128 ~ 2^127
50! = 3.0414093201713 * 10 64
代码如下:
package test;
public class Factorial {
public static void main(String[] args) {
// TODO Auto-generated method stub
double fac = 1;
int count = 50;
for (int i = 1; i <= count; i++) {
fac = fac * i;
}
System.out.println("1!+2!+.... +50!'s factorial is :" + fac);
}
}
------解决方案--------------------
------解决方案--------------------
选错类型了吧,用BigInteger
------解决方案--------------------
BigInteger