Calculates the number of ways to choose k
items from n
items without repetition and without order.
Number.isNaN()
to check if any of the two values is NaN
.k
is less than 0
, greater than or equal to n
, equal to 1
or n - 1
and return the appropriate result.n - k
is less than k
and switch their values accordingly.2
through k
and calculate the binomial coefficient.Math.round()
to account for rounding errors in the calculation.const binomialCoefficient = (n, k) => {
if (Number.isNaN(n) || Number.isNaN(k)) return NaN;
if (k < 0 || k > n) return 0;
if (k === 0 || k === n) return 1;
if (k === 1 || k === n - 1) return n;
if (n - k < k) k = n - k;
let res = n;
for (let j = 2; j <= k; j++) res *= (n - j + 1) / j;
return Math.round(res);
};
binomialCoefficient(8, 2); // 28
JavaScript, Math
Calculates the distance between two points in any number of dimensions.
JavaScript, Math
Calculates the greatest common divisor between two or more numbers/arrays.
JavaScript, Math
Calculates the least common multiple of two or more numbers.