Javascript:使用reduce()方法在数组中查找LCM

时间:2015-06-19 07:44:27

标签: javascript

我试图在数组中的几个数字中找到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

1 个答案:

答案 0 :(得分:2)

您的smallestCommons功能缺少returnundefined是所有不具有明确return的函数的默认返回值。

function smallestCommons(arr) {
  return arr.reduce(lcm);
}