博客园尾递归与编译器优化
百度百科尾递归
当函数的最后执行代码除了调用函数自身外,不再执行其他运算,编译器会有这样的优化:
函数在递归调用之前已经把所有的计算任务已经完毕了,他只要把得到的结果全交给子函数就可以了,无需保存什么,子函数其实可以不需要再去创建一个栈帧,直接把就着当前栈帧,把原先的数据覆盖即可。

博客园尾递归与编译器优化
百度百科尾递归
当函数的最后执行代码除了调用函数自身外,不再执行其他运算,编译器会有这样的优化:
函数在递归调用之前已经把所有的计算任务已经完毕了,他只要把得到的结果全交给子函数就可以了,无需保存什么,子函数其实可以不需要再去创建一个栈帧,直接把就着当前栈帧,把原先的数据覆盖即可。