如何获得阶乘值

时间:2013-02-19 12:36:18

标签: java apache-commons factorial

我想获得数字的阶乘值。我在维基中读到我可以期待5的结果!为5x4x3x2x1 = 120.现在我怎样才能在Java中获得它?

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

这只打印5。

最后我想计算网络中的组合:

network

具有以下公式:

example from wiki

3 个答案:

答案 0 :(得分:1)

您似乎对 fractions factorials 感到困惑。

如果您需要 factorial ,可以使用ArithmeticUtils.factorial

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

答案 1 :(得分:1)

使用Guava的BigIntegerMath

计算阶乘,即n!

BigInteger factorial = BigIntegerMath.factorial(n);

计算二项式,即n! / (k! (n - k)!)

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

intlong的类似功能分别在IntMathLongMath中提供。)

答案 2 :(得分:1)

顺便说一句,为什么不使用普通的旧公式:

x=n*(n-1)/2

其中n是顶点数。

对于这个简单的任务,您不必使用计算密集型函数作为因子...