title: 怎样避免JavaScript中过长递归导致的堆栈溢出？
desc: <div class
topic: 前端开发
content: 递归改循环呀喵 将代码的递归逻辑修改成for或者while循环， 适用于规模较小逻辑相对简单的情况. 这个大家都知道. 但果递归层次深， 逻辑复杂怎么办的话需要使用尾递归优化. 举个最简单的例子， 计算阶乘的例子 function facnreturn n<1 0 nfacn-1改成尾递归之后是 function facn， r1return n<1 r facn-1， rn注意尾递归中的fac的参数r保存了临时的计算结果， 函数返回回溯时不需要做任何额外的计算
answerer_tags: 甜甜哒