如何在javascript中求25的阶乘

nit*_*ngh 5 javascript

当我使用

function processData(input) {`console.log(fact(input));`}

function fact(input) {
  if (input == 1 || input == 0) {
    return input;
  } else {
    return input * fact(input - 1);
  }
}
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:

1.5511210043330986e+25
Run Code Online (Sandbox Code Playgroud)

但是我需要 :

15511210043330985984000000
Run Code Online (Sandbox Code Playgroud)

我为此输出做了什么。我无法包含任何库,因为它是在线测试,并且我无权添加库。

use*_*877 3

如果你想要这种输出,你需要使用一个与 Javascript 不同的处理数字的库。它称为 BigNumber.js

你的代码看起来像这样:

function processData(input) { console.log(fact(input).toFormat().replace(/\,/g, "")); }
function fact(input) {
    if(typeof input != "object")
         input = new BigNumber(input);
    if(input.equals(1) || input.equals(0))
         return input;
    return input.times(fact(input.minus(1)))
}
Run Code Online (Sandbox Code Playgroud)