我已经知道如何在没有方法的情况下找到 GCD(如下),但是如何创建一个函数来使用两个或更多整数来完成此操作?
function greatest(x,y){
return x<0 || y<0 ? null : x%y===0 ? y : greatest(y, x%y);
}
console.log(greatest(64,2)); //2
console.log(greatest(88,200)); //8
//Finding the gcd of two integers using recursion
const gcd = function(x, y) {
if (!y){ //if y is zero return back x
return x;
}
return gcd(y, x % y);
}
最佳答案
您可以使用spread syntax将剩余参数分组到一个数组中,并一次获取一对 GCD。 LCM 可以通过类似的递归来非常相似地完成。
const gcd = function(x, y, ...z) {
if (!y && z.length > 0) {
return gcd(x, ...z);
}
if (!y) {
return x;
}
return gcd(y, x % y, ...z);
}
console.log(gcd(6, 12, 8));
console.log(gcd(9, 15, 36));
编辑:这是 LCM,按照评论中的要求。注意,需要划分多个GCD,不能将多个GCD组合在一起进行划分。
const lcm = function(x, y, ...z) {
if (z.length == 0) {
return x * y / gcd(x, y);
}
return lcm(x * y / gcd(x, y), ...z);
}
关于javascript - 我怎样才能找到两个或多个整数的GCD,javascript?没有方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68371293/