堆栈
定义:是一种数据结构,遵循先进后出的原则,先进:最先进入的数据,位于底部;后出:最后进入的数据,最先被移除。
主要操作:
-
push:把一个元素放到栈顶
-
pop:取出栈顶元素
场景应用
假设我们有一个任务:计算某个目录下所有文件的总大小。这个目录可能会包含许多子目录,我们需要将目标任务分解成更小的子任务
递归的思路:
-
检查当前目录下的内容;
-
如果遇到子文件,直接累加大小;
-
如果遇到子目录,则将“子目录计算任务”压入调用栈,等它计算完成后再回到上一级。
当函数调用递归时,调用栈会:
-
压入:保存当前函数的执行位置、局部变量、参数
-
弹出:当子任务完成后,恢复到上一层函数继续执行
这种行为满足后进先出(LIFO):
-
最后调用的子任务,最先执行完成并返回
-
第一层任务只有在所有对应的子任务完成之后,才会继续执行
亦或者,任务是当一个函数执行中抛出异常时,系统需要找到最近的异常处理器来处理它。那么堆栈会起到的执行思路便是:
-
调用栈会记录当前函数的执行链
-
异常抛出时,系统依次从栈顶“回退”到之前的调用位置(pop),直到找到匹配的 catch 处理块
-
堆栈让异常回溯自然完成,符合最近调用先处理的逻辑
1021

被折叠的 条评论
为什么被折叠?



