我正在尝试编写一个函数来查找 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))
在某处我对此的推理是错误的,但这是我的看法(请在我错的地方纠正我):
使用不满足条件 D 的数字 N 调用此函数将导致再次使用 N + 1 调用该函数。最终,当它达到应满足条件 D 的数字 M 时,while 循环将一直运行,并且函数返回数字 M 并且不再有递归调用。
但是我在运行它时收到此错误:
函数 findSmallest(num){ ^
RangeError:超出最大调用堆栈大小
我知道这样的错误几乎总是由于递归函数没有达到基本情况。这是这里的问题吗?如果是,问题出在哪里?