给定一个由两个数字组成的数组,让它们定义一段数字范围。例如,[2,6]
表示范围为2、3、4、5、6。我想编写javascript代码来查找该范围的最小公倍数。我的下面的代码仅适用于小范围,不能处理像[1,13]
(即范围1、2、3、4、5、6、7、8、9、10、11、12、13)这样的大范围,会导致堆栈溢出。如何高效地找到一段数字范围的最小公倍数?
function leastCommonMultiple(arr) {
var minn, max;
if ( arr[0] > arr[1] ) {
minn = arr[1];
max = arr[0];
} else {
minn = arr[0];
max = arr[1];
}
function repeatRecurse(min, max, scm) {
if ( scm % min === 0 && min < max ) {
return repeatRecurse(min+1, max, scm);
} else if ( scm % min !== 0 && min < max ) {
return repeatRecurse(minn, max, scm+max);
}
return scm;
}
return repeatRecurse(minn, max, max);
}