2017-12-05 4 views
-1

私は、このメソッドを使用して数値の階乗をやろうとしている:JavaでBigIntegerメソッドを正しく使うには?

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

を使用し、間違っていますか? –

+0

結果=結果* i; –

+0

最終結果はnでなければなりません! –

答えて

3

compareTo(T o)

戻りの定義を参照してください。あなたは>= 0意味を使用している

inより大きいながらループし続けます。

おそらく<= 0が必要です。

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

ではなく、あなたがここで何の行動を期待している

i.compareTo(BigInteger.valueOf(n)) <= 0 
関連する問題