介绍尾递归
概念
尾调用: 某个函数的最后一步是调用另一个函数
尾递归:某个函数的最后一步是调用自身
好处
尾递归,由于只存在一个调用栈,所以永远不会发生“栈溢出”错误,相对节省内存
举例
- 阶乘函数
function factorial(n, total){
if(n === 1) return total;
return factorial(n-1, n * total);
}
- Fibonacci(1,1,2,3,5,8)
function Fibonacci2(n, pre=1, cur=1){
if(n <= 1) {return cur}
return Fibonacci2(n-1,cur,pre+cur);
}