Учитывая массив из двух чисел, пусть они определяют начало и конец диапазона чисел. Например, [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);
}