计算阶乘
重要程度: 4
自然数的 阶乘 是指,一个数乘以 数字减去 1
,然后乘以 数字减去 2
,以此类推直到乘以 1
。n
的阶乘被记作 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