zoukankan      html  css  js  c++  java
  • 关于调用函数使用栈

    为什么函数调用要用栈实现? - 牛岱的回答 - 知乎 https://www.zhihu.com/question/34499262/answer/1169592250

     函数调用基本都是使用栈, 原因就是函数调用的LIFO特性。

    一个递归算法,如果其出口的条件永远无法满足,函数的调用栈就会持续增长,发生 stack overflow。这是因为每进行一次递归调用,栈都增长一次,递归的 深度,决定的 增长的高度。

    那么回到原来的问题,为什么要用 来记录函数调用过程?

    我们想一下这样一个过程:

    void c() {
        d()
    }
    

    在上面的代码中,函数 c 的内部调用了函数 d,那么函数的进入和离开的先后顺序是这样的:

    c 开始 -> d 开始 -> d 结束 -> c 结束
    

    c 函数先进去的,但是它更晚才出来,这就是你熟悉的 FILO,或者 LIFO,满足这个条件的数据结构,就是你最熟悉的

    所以堆栈这个数据结构,真正模拟的,其实是 嵌套关系,一切具备嵌套性质的东西,用堆栈做是最自然的。

  • 相关阅读:
    BigDecimal用法详解
    Spring IOC的配置使用
    Spring IOC容器基本原理
    Spring IOC基础
    Spring基础
    Spring概述
    win7+jdk环境变量配置
    订单状态
    项目经理与项目管理整理
    top命令按内存和cpu排序
  • 原文地址:https://www.cnblogs.com/tarzen213/p/14861723.html
Copyright © 2011-2022 走看看