• 关于调用函数使用栈


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

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

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

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

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

    void c() {
        d()
    }
    

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

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

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

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

  • 相关阅读:
    Java服务停止与开启
    跨域,php后端处理
    Mac 504 gateway timeout nginx
    Tp3.2 多数据库链接
    Redis 设置密码
    Redis 如何对外访问 lnmp安装
    tensorflow gpu安装
    ngx_http_upstream_check_module
    Nginx负载均衡+监控状态检测
    springboot+log4j2+slf4j控制台打印带sql日志
  • 原文地址:https://www.cnblogs.com/tarzen213/p/14861723.html
Copyright © 2020-2023  润新知