尾调用 && 尾递归
某个函数的最后一步是调用另一个函数
function f(x){
return g(x);
}
函数f的最后一步是调用函数g,这就叫尾调用。
以下三种情况,都不属于尾调用
// 情况一
function f(x){
let y = g(x);
return y;
}
// 情况二
function f(x){
return g(x) + 1;
}
// 情况三
function f(x){
g(x);
}
尾调用不一定出现在函数尾部,只要是最后一步操作即可
function f(x) {
if (x > 0) {
return m(x)
}
return n(x);
}函数m和n都属于尾调用,因为它们都是函数f的最后一步操作。
尾递归
函数调用自身,称为递归。如果尾调用自身,就称为尾递归
function factorial(n, total) {
if (n === 1) return total;
return factorial(n - 1, n * total);
}
factorial(5, 1) // 120
浙公网安备 33010602011771号