RangeError: Maximum call stack size exceeded
エラーから移動できないようです。ある範囲内のすべての数値で割り切れる最小の数を見つけようとしています。その範囲の数値は配列として関数に渡されます。 6056820
しかし、明らかではない、なぜならスタックエラーの:ループ内のJavascript再帰関数
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]);
私は、出力があることを期待しています。
かなり多くのアイデアがありませんでした。何か提案してください? 19
で唯一の素因数は、それ自体で一つだけが2^n
が2
であるため、n
は自然です
あなたは最終的に倍数を割り振ることで、割り切れる数を打つことが保証されていますか? – StephenTG
私はあなたが2018940を3回追加することを期待していると思いますが、代わりに4037880から8075760まで毎回倍増しています。ヒントとして、私はこの問題を知っていると思います。 –
あなたのアルゴリズムに欠陥があります。あなたはこれを探していますか:http://stackoverflow.com/questions/147515/least-common-multiple-for-3-or-more-numbers? –