Project Euler#5 JavaScript - 解决方案在我的代码中出现了很大的错误

时间:2017-02-28 16:32:33

标签: javascript

我对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代码的良好习惯,所以对我的代码的所有反馈和批评都非常受欢迎!

1 个答案:

答案 0 :(得分:1)

这是因为当计数器等于max时,你会return。返回意味着像功能结束,停在这里&amp;返回此值!因此,当您的条件匹配时,函数 - 和您的while循环 - 将停止执行。

因此,不是在循环中返回值,而是可以将evenlyDivided设置为false,并在while循环后返回n