我尝试使用此方法执行数字的阶乘:
public static BigInteger factorial (long n) {
BigInteger result = BigInteger.ONE;
for(BigInteger i = BigInteger.TWO; i.compareTo(BigInteger.valueOf(n)) >= 0; i = i.add(BigInteger.ONE)) {
result = result.multiply(i);
}
return result;
}
我问为什么te结果始终为1(BigInteger.ONE)?
答案 0 :(得分:3)
答案 1 :(得分:1)
i.compareTo(BigInteger.valueOf(n)) >= 0
是错误的,而是使用
i.compareTo(BigInteger.valueOf(n)) <= 0