2017-02-28 46 views
0

我对JS仍然很陌生,尽管它完全错误 - 所以我会很感激一些帮助!项目欧拉#5 JavaScript - 解决方案在我的代码中犯了一个大错误

我工作的问题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

这是因为您在计数器等于最大值时执行return。返回意味着像函数结束一样,在这里停止&返回这个值!所以,当你的条件匹配时,函数 - 你的while循环 - 将停止执行。

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

相关问题