GESP 五级 · GESP 202403 C++ 五级 第 25 题

判断题 · 答案 A · 考点:函数与递归

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

题目

在 C 语言中,递归的实现方式通常会占用更多的栈空间,可能导致栈溢出。

答案:A

考点

函数与递归

解题思维

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

常见错误

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

详细解析(节选)

【考点】递归|调用栈|栈溢出

GESP五级算法模块明确考查递归的内存开销。命题人卡住的是初学者对「递归=迭代」的朴素直觉,以为循环不用栈。其实每次递归调用都会压栈,深递归必然栈溢出风险。这是五级考生最常见的认知偏差,题目旨在检验对递归底层机制的理解。

看到「递归占用更多栈空间」立刻想到函数调用机制——每层递归在调用栈上分配独立栈帧。若层数过深(如斐波那契递归),栈帧累积会突破系统栈上限。对比迭代方案,循环不产生新栈帧,空间复杂度更优。答案选A符合C语言运行时规范。

B选项是典型「绝对化陷阱」。命题人利用考生对递归效率的刻板印象:以为递归只是写法不同,忽略底层调用栈开销。若考生只背「递归快、迭代慢」,就会误判。这里需警惕「更多」并非「必溢出」,但「可能导致」表述严谨。

若改条件为「尾递归优化后栈空间不变」,答案会变;若问「递归与迭代空间复杂度比较」,需具体分析。刷到同类题先问:命题人想考我递归的栈开销、尾递归优化,还是循环不变量?

同考点真题

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