有人可以解释JS中这个简单的因子脚本中的元素

时间:2013-06-30 22:59:52

标签: factorial

是的,这个菜鸟试图理解一个简单的阶乘函数,并对其中的一部分感到困惑。

var f = [];
function factorial (num) {
   if (num === 0 || num === 1) {
     return 1; }
  if (f[num] > 0) {
    return f[num];}
  else {
     return f[num] = factorial (num - 1) * num;  
   }
factorial(4);

究竟是什么

if (num === 0 || num === 1) {
 return 1; }

部分做什么,为什么有必要?

谢谢!

1 个答案:

答案 0 :(得分:2)

这些是阶乘函数的基本情况。 0! = 1和1! = 1,因此在这些情况下返回这些值。如果你没有基本情况递归,你最终会无限期地递归,而不会产生实际价值。

另一种解决方案是将预先计算的案例添加到f

var f = [1, 1];

然后它会被第二个条件抓住。