🎶 Sym - 一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)平台

📕 思源笔记 - 一款桌面端笔记应用,支持 Windows、Mac 和 Linux

🎸 Solo - B3log 分布式社区的博客端节点,欢迎加入下一代社区网络

♏ Vditor - 一款浏览器端的 Markdown 编辑器

JavaScript - 求二项式系数

2020-03-25

描述

计算两个整数 nk 的二项式系数。

提示

  • 使用 Number.isNaN() 检查 nk 是否为 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);
};

示例

C_8^2

binomialCoefficient(8, 2); // 28

返回总目录

每天 30 秒系列之 JavaScript 代码


欢迎注册黑客派社区,开启你的博客之旅。让学习和分享成为一种习惯!

4 评论
ferried • 2020-03-25
回复 删除

怎么突然搞起了数学?

Vanessa • 2020-03-25
回复 删除

今早看文字都没看懂,还专门找了个视频看看

wizardforcel • 2020-03-25
回复 删除

我习惯组合数这么写:C_8^2

ferried • 2020-03-25
回复 删除

C_8^2