柚子快报邀请码778899分享:关于调用函数使用栈

http://yzkb.51969.com/

 

 

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

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

 

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

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

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

void c() {

d()

}

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

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

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

 

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

柚子快报邀请码778899分享:关于调用函数使用栈

http://yzkb.51969.com/

好文链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。