に階乗実装を書こうとしていnode.js
ます。非常に単純な再帰的アプローチから最も複雑なアルゴリズムまで。コードは次のとおりです。
process.stdin.resume();
var i = 0, t = 0;
process.stdin.on('data', function (n) {
if (t == 0) {
t = n;
} else {
if (i++ < t) {
process.stdout.write(Factorial(n).toString());
if (i == t) {
process.exit();
}
} else {
process.exit();
}
}
});
function Factorial (n) {
if (n > 1) {
n *= Factorial(n - 1);
}
return n;
}
問題は — 数字の表現です。私は正確な答えを期待しています:
100! = 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
しかし、私はより論理的ですが、現時点では役に立たないものを受け取っています:
100! = 9.33262154439441e+157
階乗のバイナリ表現は正しいと思いますが、どうすればそれを「緩い」形式にすることができますか?