进栈与出栈-递归案例演示

栈作为一种基本的数据结构,其简单性和高效性使得它在各种计算和编程任务中具有广泛的应用。理解和掌握栈的原理和操作,对于编写高效、可靠的代码至关重要。

什么是栈

栈是一种特殊的线性表,仅允许在表的一端进行插入和删除运算。这一端被称为栈顶(top),相对地,把另一端称为栈底(bottom)。向一个栈插入新元素又称作进栈、入栈或压栈(push),它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈(pop),它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。所以栈具有“后入先出”的特点(LIFO)。

栈的作用

在程序执行过程中,函数调用是通过栈来管理的。每当一个函数被调用时,会将当前的执行环境(例如局部变量、参数和返回地址)压入栈中。当函数执行完毕后,这些信息会从栈中弹出,恢复之前的执行环境。

同时在一些回溯算法中,如深度优先搜索、迷宫求解等,使用栈来保存回溯路径,便于在需要时返回上一步。

递归函数中栈的内存演示

这里演示了一个爬台阶的案例,题目要求是有jieshu阶台阶,要求每次可以爬1阶或2阶,求解一共有多少爬法。

1
2
3
4
5
6
7
8
9
def stairs(jieshu):
if jieshu ==1:
return 1
elif jieshu==2:
return 2
else:
return (jieshu-1)+stairs(jieshu-2)

stairs(5)

上述代码中

进栈的过程图示为:

递归可视化_进栈

出栈的过程为:

递归可视化_出栈

总的流程示意:

递归可视化

进栈与出栈-递归案例演示
https://linxkon.github.io/进栈与出栈-递归案例演示.html
作者
linxkon
发布于
2020年6月1日
许可协议