4.9 递归函数的栈图
最后更新于:2022-04-01 06:19:48
在前面的章节中,我们使用了一个栈图来表示一个程序在函数调用时所处的状态。 同样的图形也能使得递归函数的解释变得更容易些。
每次函数被调用,它都会创建一个新的实例,包含着函数的局部变量和参数。
本图说明了函数countdown的一个栈图,调用时n的初始值为3;
![enter image description here](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-01_55e55c6fdb7be.jpg)
图中有一个main函数的实例和四个countdown函数的实例,每个实例中的参数n的值都不同。栈底的countdown实例n取值为0。它没有进行递归调用,因此没有更多的countdown实例。
main函数的实例是空的,因为main函数没有任何参数或者局部变量。作为一个练习,请你为nLines画出一个栈图,参数n取值为4。