如何在Java中正确使用BigInteger方法?

时间:2017-12-05 14:03:27

标签: java

我尝试使用此方法执行数字的阶乘:

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)?

2 个答案:

答案 0 :(得分:3)

参见compareTo(T o)

的定义
  

返回负整数,零或正整数,因为此对象小于,等于或大于指定的对象。

您正在使用>= 0含义继续循环,而i 大于 n

您可能需要<= 0

答案 1 :(得分:1)

i.compareTo(BigInteger.valueOf(n)) >= 0

是错误的,而是使用

i.compareTo(BigInteger.valueOf(n)) <= 0