RosettaCodeData/Task/Evaluate-binomial-coefficients/JavaScript/evaluate-binomial-coefficients.js

21 lines
367 B
JavaScript
Raw Permalink Normal View History

2026-04-30 12:34:36 -04:00
/**
* Calculates the binomial coefficient n choose k
*
* @param {number} n
* @param {number} k
*/
function nCk(n, k) {
if (k < 0 || k > n) return 0;
2023-07-01 11:58:00 -04:00
2026-04-30 12:34:36 -04:00
let result = 1;
2023-07-01 11:58:00 -04:00
2026-04-30 12:34:36 -04:00
for (let i = 0; i < k; i++) {
// `result *= (n - i) / (i + 1)` can cause floating point errors
result = result * (n - i) / (i + 1);
}
2023-07-01 11:58:00 -04:00
2026-04-30 12:34:36 -04:00
return result;
2023-07-01 11:58:00 -04:00
}
2026-04-30 12:34:36 -04:00
console.log(nCk(5, 3));