返回课程

计算阶乘

重要性: 4

自然数 的 阶乘 是一个数乘以 "该数减一",然后乘以 "该数减二",依此类推,直到 1n 的阶乘表示为 n!

我们可以这样写阶乘的定义

n! = n * (n - 1) * (n - 2) * ...*1

不同 n 的阶乘值

1! = 1
2! = 2 * 1 = 2
3! = 3 * 2 * 1 = 6
4! = 4 * 3 * 2 * 1 = 24
5! = 5 * 4 * 3 * 2 * 1 = 120

任务是编写一个函数 factorial(n),使用递归调用来计算 n!

alert( factorial(5) ); // 120

P.S. 提示:n! 可以写成 n * (n-1)! 例如:3! = 3*2! = 3*2*1! = 6

根据定义,阶乘 n! 可以写成 n * (n-1)!

换句话说,factorial(n) 的结果可以计算为 n 乘以 factorial(n-1) 的结果。 n-1 的调用可以递归地向下下降,直到 1

function factorial(n) {
  return (n != 1) ? n * factorial(n - 1) : 1;
}

alert( factorial(5) ); // 120

递归的基础是值 1。 我们也可以在这里将 0 作为基础,这并不重要,但会多出一个递归步骤

function factorial(n) {
  return n ? n * factorial(n - 1) : 1;
}

alert( factorial(5) ); // 120