Я пытаюсь написать функцию, чтобы найти наименьшее число, которое делят все целые числа от 1 до 20.(Давайте назовем это Условие D)
Вот мое решение, которое как-то превышает предел размера стека вызовов.
function findSmallest(num){
var count = 2
while (count<21){
count++
if (num % count !== 0){
// exit the loop
return findSmallest(num++)
}
}
return num
}
console.log(findSmallest(20))
Где-то мои рассуждения об этом ошибочны, но вот как я это вижу (пожалуйста, поправьте меня, где я ошибаюсь):
Вызов этой функции с номером N, который не соответствует условию D, приведет к повторному вызову функции с N + 1. В конце концов, когда она достигнет номераM, которое должно удовлетворять условию D, цикл while проходит весь путь, и функция возвращает число M, и больше нет рекурсивных вызовов.
Но я получаю эту ошибку при запуске:
function findSmallest (num) {^
RangeError: Превышен максимальный размер стека вызовов
Я знаю, что подобные ошибки почти всегда происходят из-за того, что рекурсивные функции не достигают базового случая.Это проблема здесь, и если да, то где проблема?