2013-02-19 103 views
-1

我想獲得一個數字的階乘值。我在wiki中讀到我可以期待5的結果!是5x4x3x2x1 = 120.現在我怎麼能在Java中獲得?如何獲得階乘值

BigFraction g = new BigFraction(5); 
System.out.println(g.getNumerator()); 

此打印只是5.

在我想在網絡中,以計算組合末尾:

network

其具有以下通式:

example from wiki

+2

您的意思是'因子'值? – 2013-02-19 12:37:24

+2

你似乎很困惑* [分數](http://en.wikipedia.org/wiki/Fraction_(數學))*和* [分解因子](http://en.wikipedia.org/wiki/Factorial)* 。 – 2013-02-19 12:37:38

+0

我想你可以開始機智http://stackoverflow.com/questions/891031/is-there-a-method-that-c​​alculates-a-factorial-in-java – Raman 2013-02-19 12:39:02

回答

1

順便說一句,爲什麼不是t使用普通的舊公式:

x=n*(n-1)/2 

其中n是頂點的數量。

對於這個簡單的任務,您不必使用計算密集型函數作爲因子...

+0

謝謝,正是我需要的 – clankill3r 2013-02-19 22:16:41

1

你好像不是Ø是混亂fractionsfactorials

如果你想階乘,您可以使用ArithmeticUtils.factorial爲:

long factorial = ArithmeticUtils.factorial(5); 
System.out.println(factorial); // "120" 
+0

我怎樣才能處理大數? 'long factorial = ArithmeticUtils.factorial(89);'給出MathArithmeticException – clankill3r 2013-02-19 13:04:00

+0

@ clankill3r:這是一個*不同的問題。 – 2013-02-19 13:04:47

1

利用番石榴的BigIntegerMath

爲了計算階乘即n!

BigInteger factorial = BigIntegerMath.factorial(n); 

爲了計算二項式即n!/(k! (n - k)!):(爲intlong類似的功能分別是在IntMathLongMath提供)

BigInteger binomial = BigIntegerMath.binomial(n, k);