题15

题目

[!question]+
【2015 统考真题】已知程序如下:
程序运行时使用栈来保存调用过程的信息, 自栈底到栈顶保存的信息依次对应的是 ( )

int S(int n) {
    return (n <= 0) ? 0 : S(n - 1) + n;
}
 
void main() {
    cout << S(1);
}

A. main() → S(1) → S(0)
B. S(0) → S(1) → main()
C. main() → S(0) → S(1)
D. S(1) → S(0) → main()

分析

[!NOTE]+
递归调用函数时, 在系统栈中保存的函数信息需满足先进后出的特点, 依次调用了 main(), S(1), S(0), 所以栈底到栈顶的信息依次是 main(), S(1), S(0)
注意

在递归中, 系统为每一层的返回点、局部变量、传入实参等开辟了递归工作栈来存储。

[!done]+
A