Skip to content
📁 标签
JavaScript

什么是尾递归

尾递归指的是在递归函数时,在return时调用起另外一个函数

代码执行是基于执行栈的,所以当在一个函数里调用另外一个函数时,会保留当前函数上下文,在新建一个执行上下文加入到栈中

如果是采用尾递归方式,在最后返回的时候可以不保留当前执行上下文,达到节省内存优化,也就是常说的尾递归优化

js
// 尾递归
function foo(n){
    if(n>10) return n
    return foo(n+1)
}

但是不建议使用尾递归,因为不方便后续debugger,而且ES6中默认尾递归是无效的 在V8中尾递归优化功能已经被移除了,也是因为尾递归会破坏函数的调用栈信息 proposal-ptc-syntax