[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/ppdouble/Java/master/Maths/Combinations.java [Back]  [Original]

package Maths;

/** @see Combination */
public class Combinations {
  public static void main(String[] args) {
    assert combinations(1, 1) == 1;
    assert combinations(10, 5) == 252;
    assert combinations(6, 3) == 20;
    assert combinations(20, 5) == 15504;
  }

  /**
   * Calculate of factorial
   *
   * @param n the number
   * @return factorial of given number
   */
  public static long factorial(int n) {
    if (n < 0) {
      throw new IllegalArgumentException("number is negative");
    }
    return n == 0 || n == 1 ? 1 : n * factorial(n - 1);
  }

  /**
   * Calculate combinations
   *
   * @param n first number
   * @param k second number
   * @return combinations of given {@code n} and {@code k}
   */
  public static long combinations(int n, int k) {
    return factorial(n) / (factorial(k) * factorial(n - k));
  }
}

Web Proxy Viewer  |  New URL  |  Original Page