今天看啥  ›  专栏  ›  lio_zero

每日一算法:二项式系数

lio_zero  · 简书  ·  · 2021-05-01 12:50

在数学上, 二项式系数 ,或组合数,是定义为形如 (1 + x)ⁿ 展开后 x 的系数(其中 n 为自然数,k 为整数)。从定义可看出二项式系数的值为整数。

JavaScript 示例

计算从 n 个元素中选择 k 个元素的方法的个数(不重复且不按顺序)。

  • 使用 Number.isNaN() 检查任何两个值是否为 NaN

  • 检查 k 是否小于 0 、大于或等于 n ,等于 1 n - 1 ,并返回适当的结果。

  • 检查 n - k 是否小于 k ,并相应地切换其值。

  • 2 k 循环并计算二项式系数。

  • 使用 Math.round() 解决计算中的舍入误差。

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

此示例来自 30 seconds of code 的 binomialCoefficient




原文地址:访问原文地址
快照地址: 访问文章快照