--- title: Binomial coefficient tags: math,algorithm cover: blue-red-mountain firstSeen: 2018-02-14T12:34:02+02:00 lastUpdated: 2020-12-28T13:49:24+02:00 --- Calculates the number of ways to choose `k` items from `n` items without repetition and without order. - Use `Number.isNaN()` to check if any of the two values is `NaN`. - Check if `k` is less than `0`, greater than or equal to `n`, equal to `1` or `n - 1` and return the appropriate result. - Check if `n - k` is less than `k` and switch their values accordingly. - Loop from `2` through `k` and calculate the binomial coefficient. - Use `Math.round()` to account for rounding errors in the calculation. ```js 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); }; ``` ```js binomialCoefficient(8, 2); // 28 ```