数据结构——栈以及堆栈溢出

作者: LuDSh | 来源:发表于2017-09-18 13:30 被阅读381次

    关于栈stack,基本概念,今天主要说一下,调用栈call stack以及递归。

    堆栈:是计算机科学,其特殊之处在于只能允许在链接串列或阵列的一端(top)进行加入数据(push)和输出数据(pop)的运算。特点是:后进先出,除头尾节点之外,每个元素有一个前驱,一个后继。

    那么什么是调用栈呢?

    官方的概念就不说了,函数的调用使用到的就是调用栈,经常用于存放程序的返回地址。

    这个函数的调用过程是这样:

    在递归中就用到了调用栈,先用递归实现一下阶乘,然后我们看以下调用的过程。

    调用的过程:

    从图中我们可以看到,在递归的过程中,需要占用内存的调用栈会越来越多,那么如果是一个无线递归的函数,势必会面临栈溢出的问题,当然了即便不是无限的,层数太多的话也会面临堆栈溢出的问题。因此在使用递归函数的时候,需要注意基线条件和调用条件的书写,基线条件保证不会出现无限递归的情况。

    如果出现栈溢出应该怎么办?两种方法:1.使用循环;2.尾递归

    相关文章

      网友评论

        本文标题:数据结构——栈以及堆栈溢出

        本文链接:https://www.haomeiwen.com/subject/xqovsxtx.html