我试图在数组中的几个数字中找到LCM(最小公倍数)。要在数组中的每两个数字之间获得LCM,我使用reduce()
方法无法正常工作。请告诉我错误的是什么?谢谢。
function gcd(a,b){
//gcd: greatest common divisor
//use euclidean algorithm
var temp = 0;
while(a !== 0){
temp = a;
a = b % a;
b = temp;
}
return b;
}
function lcm(a,b){
//least common multiple between two numbers
return (a * b / gcd(a,b));
}
function smallestCommons(arr) {
//this function is not working, why?
arr.reduce(function(a, b){
return lcm(a, b);
});
}
smallestCommons([1,2,3,4,5]);
//------>undefined
答案 0 :(得分:2)
您的smallestCommons
功能缺少return
。 undefined
是所有不具有明确return
的函数的默认返回值。
function smallestCommons(arr) {
return arr.reduce(lcm);
}