function factorial(n) {
if (n === 0) {
return 1;
}
return n * factorial(n - 1);
}
console.log(factorial(5)); // 输出 120
这个函数使用了递归的方法来计算阶乘。递归是一种函数调用自身的方法。在这个函数中,如果输入参数 n
为0,函数会返回1。如果 n
不为0,函数会返回 n
与 factorial(n-1)
的乘积。
例如,当 n
为5时,函数会执行以下步骤:
factorial(5)
调用factorial(4)
,并将结果与5相乘。factorial(4)
调用factorial(3)
,并将结果与4相乘。factorial(3)
调用factorial(2)
,并将结果与3相乘。factorial(2)
调用factorial(1)
,并将结果与2相乘。factorial(1)
调用factorial(0)
,并将结果与1相乘。factorial(0)
返回1。factorial(1)
返回1 * 1 = 1。factorial(2)
返回2 * 1 = 2。factorial(3)
返回3 * 2 = 6。factorial(4)
返回4 * 6 = 24。factorial(5)
返回5 * 24 = 120。
这个函数的原理是将阶乘问题分解成更小的子问题,直到问题的规模变得足够小,可以直接得到答案。在这个例子中,我们把计算 factorial(n)
的问题,分解成计算 factorial(n-1)
的问题,然后再乘以 n
。递归函数会一直调用自身,直到问题规模减小到可以直接得到答案,即 factorial(0)
返回1。