2017-02-28 3 views
0

私はまだJSで新しく、完全に間違っていてもコードを動作させました。私は問題5のためのソリューションに取り組んでいたプロジェクトオイラー#5 JavaScriptコードが大きな誤りを抱えています

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

これは、カウンタがmaxと等しい場合にreturnを実行するためです。戻り値は関数の終わりのようなものを意味し、ここではちょうど終了します&この値を返します!したがって、条件が一致すると、関数とwhileループが実行を停止します。

ループ内で値を返す代わりに、evenlyDividedをfalseに設定し、whileループの後にnを返します。

関連する問題