跳到主要内容
uencoder

Tail Recursion

尾递归是递归调用为函数最后操作,编译器可优化为循环避免栈溢出。

用途

用递归表达循环逻辑而不增加栈深度,函数式语言核心。

机制

若递归调用为尾位置(返回前最后操作),TCO 将其转为跳转而非调用,复用栈帧。需语言支持(Scheme/SML 强制;JS 严格模式规范可选,但仅 Safari/JavaScriptCore 实现)。非尾递归需用累加器改写。

用例

  • 函数式编程
  • 栈溢出避免
  • 递归优化

相关词条

参考链接