计算两个或两个以上数字/数字数组的最大公约数。
内部的 _gcd
函数使用递归。基本情况是,当 y
等于 0
的情况下,返回 x
。否则,返回 y
的最大公约数和x / y
的其余数。
const gcd = (...arr) => { const _gcd = (x, y) => (!y ? x : gcd(y, x % y)); return [...arr].reduce((a, b) => _gcd(a, b)); };
gcd(8, 36); // 4 gcd(...[12,8,32]); // 4