尾调用
1.尾调用是函数编程的重要概念,指某一个函数的最后一步调用了另一个函数
2.尾调用不一定出现在函数的最后,但一定是函数的最后一步操作
3.函数调用内部形成一个调用桢,保存调用的位置和内部变量等信息,内部的函数嵌套形成 调用栈,尾调用由于是函数最后一个操作,由于位置信息和内部变量步子使用,可以用最后一个函数的调用帧取代外层函数的调用帧,这就是所谓的 尾调用优化
4.只有不在用到外层函数的内部变量,内部函数的调用帧才会取代外层的调用帧
尾递归
1.函数调用自身,为递归;尾调用调用自身,则为尾递归;
2.递归耗费内存是由于需要保存函数的调用帧引起的,容易栈溢出,但是对于尾递归只存在一个调用帧,所以不会发生 栈溢出的错误
3.改写递归函数为尾递归: 把所有用到的内部变量改写为函数的参数
网友评论