说说什么是尾递归及其应用
# 是什么
- 递归:在函数内部调用自身
- 尾递归: 在函数尾部调用自身
# 递归
复杂度 O(n)
function factorial(n) {
if (n === 1) return 1;
return n * factorial(n - 1);
}
factorial(5, 6); // 120
# 尾递归
复杂度 O(1)
function factorial(n, total) {
if (n === 1) return total;
return factorial(n - 1, n * total);
}
factorial(5, 6); // 120
# 应用场景
- 数组求和
function sum(arr, total) {
if (arr.length === 1) {
return total;
}
return sum(arr, total + arr.pop());
}
- 斐波那契
function fb(n, start = 1, total = 1) {
if (n <= 2) {
return total;
}
return fb(n - 1, total, total + start);
}
上次更新: 2021/12/19, 18:05:42