栈是限定仅在表尾进行插入和删除操作的线性表
表尾为栈顶,表头为栈底
栈的特性:先进后出
栈在程序语言设计中可以实现递归
一个直接或间接调用自己的函数,称为递归函数
递归三要素:边界条件,前进阶段,返回阶段
递归优点:代码间接
递归缺点:时间空间消耗大,容易造成栈溢出
尾递归:递归的一种优化,部分语言中可以解决栈溢出问题
知识拓展
函数运行期间调用另一个函数
被调用函数运行前
1.将所有的参数、返回地址等信息传递给被调用函数保存
2.为被调用函数的局部变量分配存储区
3.将控制转移到被调用函数的入口
被调用函数返回调用函数之前
1.保存被调函数的计算结果
2.释放被调函数的数据区
3.依照被调用函数保存的返回地址将控制转移到调用函数