是什么让这个简单的递归不起作用?

时间:2015-03-13 02:31:55

标签: javascript recursion

第一个不起作用,它只是试图找到一个阶乘,它返回NaN,那么为什么如果你使用了其它无效呢?

function FirstFactorial(num) {
  if (num == 0) {
    return 1;
  }
  else if (num > 1) {
    return num * FirstFactorial(num - 1);
  }
}


console.log(FirstFactorial(3)) === NaN



function factorial(n) {
  if(n == 0) {
    return 1
  } 
  else {
    return n * factorial(n - 1);
  }
}

console.log(factorial(3)) == 6

1 个答案:

答案 0 :(得分:1)

你错过了num === 1的案例,所以当你做

function FirstFactorial(num) {
  if (num == 0) {
    return 1;
  }
  else if (num > 1) {
    return num * FirstFactorial(num - 1);
  }
}

FirstFactorial(3);

你正在做

3 * FirstFactorial(2);
3 * 2 * FirstFactorial(1);
3 * 2 * undefined; // NaN

重新安排功能逻辑

function FirstFactorial(num) {
    if (num > 1) {
        return num * FirstFactorial(num - 1);
    }
    return 1;
}