第三章 栈应用(递归)
- 格式:ppt
- 大小:142.00 KB
- 文档页数:1


栈在递归中的作用栈是一种具有特殊性质的线性数据结构,在其中元素的插入和删除操作只能在栈的顶部进行。
栈的特点是元素按照后进先出的顺序进行处理,即最后插入到栈中的元素最先被访问到。
递归是一种程序设计技巧,通过一个函数在其定义中调用自身来解决问题。
递归函数在解决问题时以一种分而治之的办法,将原始问题划分为较小的子问题,并通过解决子问题来解决原始问题。
那么,栈在递归中起到了什么作用呢?一、存储临时变量:递归函数在每一次调用自身时都会入栈,该栈用来保存每个递归调用时的临时变量。
在递归函数内部定义的变量会保存在栈中,每次函数调用时,这些局部变量都会被压入栈中。
当函数的递归调用完成后,栈中保存的该函数的局部变量会被弹出,以便为下一个递归调用或其他操作提供内存空间。
这样,栈起到了一个保存临时变量的作用。
二、存储函数调用的返回地址:在递归调用时,每次调用后都需要返回到上一层调用处。
栈的另一个作用是存储函数调用的返回地址。
当一个函数调用了自身,并进行了递归调用时,当前函数的上下文信息(包括函数指针、参数和局部变量等)都会被保存在栈中,然后在递归调用完成后,栈中保存的上下文信息将被弹出,返回到上一层函数的下一条执行指令的位置,继续执行下去。
三、维护递归层次关系:递归调用时,每次调用自身都需要将当前的状态保存在栈中,这样可以保留每一次递归调用的上下文信息。
栈的深度也反映了递归的层次关系。
当递归调用层数很大时,栈的深度也会相应增加。
四、确保函数调用的正确性:栈在递归中还发挥了确保函数调用的正确性的作用。
每一次递归调用都会将当前的状态保存在栈中,包括参数、局部变量、返回地址等信息。
这样,即使在递归调用过程中发生了其他函数的调用,当递归调用完成后,栈中保存的状态信息都能够正确恢复,确保程序的正确执行。
总结来说,栈在递归中起到了存储临时变量、存储函数调用的返回地址、维护递归层次关系以及确保函数调用的正确性等作用。
栈的使用使递归函数能够按照正确的顺序进行递归调用,并在递归调用完成后正确返回上一层函数的下一条执行指令的位置。