2020-04-06
描述
计算两个及以上的数字或数组的最大公约数。
提示
- 内部函数
_gcd
使用递归 - 当
y
等于0
时,返回x
- 否则将
y
和x/y
的余数传入 GCD 中继续进行计算
代码
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