Node.js输出大数字的格式

我试图在node.js上编写阶乘实现。 从非常简单的recursion方法到最复杂的algorithm。 这里是代码:

 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

我认为这个阶乘的二进制表示是正确的,但是我怎样才能得到“松散”的forms?

你可以使用任何这些:

  • BigInteger.js
  • bignumber.js
  • JavaScript的BIGNUM
  • jsbn.js

实现一个函数,在这些函数之上计算阶乘应该是非常简单的。 如果你这样做,你可能想要使用memoization来提高整体性能。 这是一个没有大整数支持的基本实现:

 var MEMOIZED_FACT = []; function FACT(number) { var n = Math.floor(number); if (n === 0 || n === 1) { return 1; } else if(MEMOIZED_FACT[n] > 0) { return MEMOIZED_FACT[n]; } else { return MEMOIZED_FACT = FACT(n - 1) * n; } } 
Interesting Posts