簡體   English   中英

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

[英]How to use properly BigInteger methods in 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;
}

我問為什么結果總是保持1(BigInteger.ONE)?

參見compareTo(T o)的定義

返回 :一個負整數 ,零或正整數,因為此對象小於 ,等於或大於指定的對象。

您正在使用>= 0表示i 大於 n繼續循環

您可能需要<= 0

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

是錯誤的,而是使用

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM