尾调用优化
尾调用
尾调用就是指某个函数的最后一步是调用另一个函数(并不一定是函数体的最后一行代码)。
尾递归
尾递归就是函数尾调用自身。
如何优化的
函数调用会在内存形成一个“调用记录”,用于保存调用位置和内部变量等信息。
尾调用由于是函数的最后一步操作,所以不需要保留外层函数的调用帧,因为调用位置、内部变量等信息都不会再用到了,只要直接用内层函数的调用帧,取代外层函数的调用帧就可以了。这就叫做“尾调用优化”。
只有不再用到外层函数的内部变量,内层函数的调用帧才会取代外层函数的调用帧,否则就无法进行“尾调用优化”。