跳到主要内容

Tail Recursive Function

尾递归把累积结果放进参数,使递归调用成为函数的最后一步;在支持尾调用优化的运行时可避免过深栈(注意:多数 JS 引擎对尾调用优化支持有限,极深递归仍宜用循环或 trampoline)。

项目中的实现

  • 源码: src/tailRecursiveFunction.ts
  • 导出: factorialTailRecursivesumTailRecursive

各函数示例

factorialTailRecursive

import { factorialTailRecursive } from 'wssf-kage-js';

factorialTailRecursive(5); // => 120

sumTailRecursive

import { sumTailRecursive } from 'wssf-kage-js';

sumTailRecursive([1, 2, 3, 4]); // => 10

什么时候优先用

  • 教学与对比「线性累积」的写法
  • 深度可控、希望风格接近函数式累加器时