Кажется, что я не могу перейти от: RangeError: Maximum call stack size exceeded
ошибки. Я пытаюсь найти наименьшее число, которое равномерно делится на все числа в пределах диапазона. Числа в этом диапазоне передаются функции как массив.Рекурсивная функция Javascript в цикле
function smallestNumberEvenlyDivisible(smallest, numbers) {
var z = 0;
for (z; z < numbers.length; z++) {
if (smallest % numbers[z] !== 0) {
smallest += smallest;
return smallestNumberEvenlyDivisible(smallest, numbers);
}
}
return smallest;
}
smallestNumberEvenlyDivisible(2018940, [18, 19, 20, 21, 22, 23]);
Я ожидаю, что выход будет: 6056820
но, очевидно, не из-за ошибки стека.
В значительной степени кончились идеи. Любые предложения, пожалуйста?
Гарантировано ли, что вы в конечном итоге ударите делимое число, непрерывно удваивая? – StephenTG
Я думаю, вы ожидаете добавить 2018940 3 раза, но вместо этого он удваивается каждый раз, от 4037880 до 8075760. В качестве подсказки я думаю, что знаю эту проблему, и я бы порекомендовал другой подход. –
Ваш алгоритм ошибочен. Возможно, вы ищете это: http://stackoverflow.com/questions/147515/least-common-multiple-for-3-or-more-numbers? –