GESP 五级 · GESP 202603 C++ 五级 第 9 题

选择题 · 答案 D · 考点:函数与递归

← 整套速查表 GESP 五级 全部真题

题目

关于递归函数调用,下列说法错误的是( )。

答案:D

考点

函数与递归

解题思维

递归问题关注两点:① 递归边界(终止条件);② 递归关系(递推公式)。分析时展开前几步即可看出规律。

常见错误

注意递归深度过大会导致栈溢出。递归必须包含终止条件,否则造成无限递归。

详细解析(节选)

【考点】递归|栈溢出|尾递归优化|异常处理

1. 考纲定位 本题考查 GESP 五级"递归与栈"核心能力,命题人卡住的是"递归必可改写为循环"的直觉陷阱,以及 C++ 异常机制的理解盲区。GESP 五级明确要求掌握递归调用栈的行为,并能区分编译器优化与语言标准行为。

2. 解题思维 看到"栈溢出"先想 C++ 标准行为——栈满时程序直接崩溃,而非抛异常;再看"尾递归优化"是编译器特定行为,并非语言保证;"所有递归都能改写为循环"看似正确,但改写后仍可能因实现不当导致栈溢出(如非尾递归改写为循环时仍可能使用栈)。例如斐波那契递归若改写为循环,仍可能因中间变量存储导致栈溢出,命题人正是利用这种"改写即安全"的错觉。因此排除 A、B、C,锁定 D。

3. 陷阱拆解 A 是事实性描述,B 涉及编译器特定优化,C 的"所有"是绝对化陷阱(改写后仍可能栈溢出),D 偷换概念——栈溢出属于未定义行为,不抛异常,程序会终止。命题人故意将"所有递归"与"避免栈溢出"绑定,制造绝对化误判。

4. 反命题思维 若将"栈溢出"改为"堆溢出",答案会指向内存管理;若将"所有递归"改为"任意递归",陷阱会更隐蔽。刷到类似题时,先问"命题人想考我什么",是考栈行为、考优化特性,还是考语言机制?

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断