階乗の後続ゼロを計算しています。私の解決策は、階乗を計算し、それに後続ゼロがどれくらいあるかを決定することです。想像できるように、これはあまりスケーラビリティがありません。どのように私は階乗を計算せずにこれを解決できますか?階数0の階乗、ただし階乗計算なし
私はSOにこれらのページを見つけた: Trailing zeroes in a Factorial Calculating the factorial without trailing zeros efficiently?
は、しかし、どちらもJavaScriptではありません。あなたがこの質問をdownvoteする場合は、なぜ私に教えてください。あなたの時間とフィードバックに感謝します。
私の解決策:数に末尾のゼロの数を知ることが
function zeros(n) {
var result = [];
var count = 0;
for (var i = 1; i <= n; i++) {
result.push(i);
} //generating range for factorial function
var factorial = result.reduce(function(acc, el) {
return acc * el;
}, 1); //calculating factorial
factorial = factorial.toString().split('');
for (var j = factorial.length - 1; j > 0; j--) {
if (parseInt(factorial[j]) === 0) {
count += 1;
} else {
break;
}
} //counting trailing zeros
return count;
}
確かにそれには、JavaScriptにCコードを変換するために些細です。実際には(https://stackoverflow.com/a/25764907)、最初の 'int'を' function'に変更し、関数内の 'int'の残りの部分を' var'に変更するだけで、 JavaScript。 – JJJ
@JJJ Cについてよく分かりませんが、私はそれらが似ているかどうかはわかりませんでした。ありがとうございました! – Brayheart