我对JS仍然很新,即使它完全错误,我也会让我的代码工作 - 所以我很感激一些帮助!
我正在研究问题5的解决方案:https://projecteuler.net/problem=5
我的想法是从一个while循环开始,直到它遇到满足任务标准的最小数字。
但是当我“完成”时,即使我没有在我的代码中将while循环条件重新分配为false,我也意识到代码仍然有效。它只是自己停止循环,并且删除while循环时代码不起作用。
我已经找到了解决此问题的其他一些解决方案,例如使用不太常见的倍数,但我更愿意先修正我的代码。
function smallestMultiple(max) {
var n = max;
var counter = 0;
var evenlyDivided = true;
while (evenlyDivided) {
for (var i=1; i<=max; i++) {
if(n%i===0) {
counter += 1;
if(counter===max) {
return n;
}
}
else {
counter=0;
n++;
}
}
}
}
smallestMultiple(10);
P.S。由于我正在学习并且没有开发任何JS代码的良好习惯,所以对我的代码的所有反馈和批评都非常受欢迎!
答案 0 :(得分:1)
这是因为当计数器等于max时,你会return
。返回意味着像功能结束,停在这里&amp;返回此值!因此,当您的条件匹配时,函数 - 和您的while循环 - 将停止执行。
因此,不是在循环中返回值,而是可以将evenlyDivided
设置为false,并在while循环后返回n
。