【发布时间】:2016-09-12 15:09:10
【问题描述】:
我似乎无法继续:RangeError: Maximum call stack size exceeded 错误。我试图找到可以被一个范围内的所有数字整除的最小数字。该范围内的数字作为数组传递给函数。
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,但显然不是,因为堆栈错误。
几乎没有想法。请问有什么建议吗?
【问题讨论】:
-
你能保证通过不断加倍最终达到可整除的数字吗?
-
我认为您希望将 2018940 添加 3 次,但每次都加倍,从 4037880 到 8075760。作为提示,我想我知道这个问题,我会推荐一种不同的方法。跨度>
-
你的算法有缺陷。您是否正在寻找这个:stackoverflow.com/questions/147515/…?
标签: javascript loops recursion