在Javascript中计算阶乘超过最大整数限制

时间:2015-04-03 09:18:27

标签: javascript algorithm

我正在尝试创建一个计算给定数字的阶乘的函数。它工作正常,直到我将大于21的数字传递给函数。我明白了21!超过整数的最大限制,但那么有一个解决方案!或者我在这里做错了!请帮忙 !下面给出了我的因子计算函数。

function calculateFactorial(number)
{
  var counter = 1;
  var factorial = number;
  if (number == 1) {
    factorial = number;
  }
  else {
    while(counter < number)
    {
      factorial = factorial * (number - counter);
      counter++;
    }
  }
  return factorial;
}

2 个答案:

答案 0 :(得分:2)

你应该为javascript使用BigInteger库。

您可以自己编写(如果您不需要高级操作,编写起来非常简单和有趣),或者您可以在线搜索。那里有大量的图书馆:

What JavaScript library can I use to manipulate big integers?

答案 1 :(得分:0)

你可以:

  1. 使用BigInteger

  2. 使用具有斯特林公式的浮动

  3. http://en.wikipedia.org/wiki/Stirling%27s_approximation