GESP 五级 · GESP 202412 C++ 五级 第 20 题

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

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

题目

递归算法必须有一个明确的结束条件,否则会导致无限递归并可能引发栈溢出。

答案:A

考点

函数与递归

解题思维

分治三步:分解(Divide)→ 解决(Conquer)→ 合并(Combine)。归并排序的关键在于合并两个有序子数组。

常见错误

归并排序递归划分时,边界容易出错。注意 merge 的区间范围是左闭右开还是闭区间。

详细解析(节选)

【考点】递归|栈溢出

本题考查递归算法的基本性质,属于 GESP 五级“算法基础”模块核心考点。命题人卡住的是“懂调用不懂原理”的考生——背过模板却不知为何必须终止。

看到“递归”先想“函数自调用”,关键观察是“无终止条件会导致无限调用”。推理依据是:每次递归都会压栈,缺少终止条件时栈帧无限增长,必然溢出。这类题通法是“回溯法思维”——任何递归都隐含调用栈,必须考虑栈空间有限性。

选项 B 设计成“错误”,利用的是“只记模板不深究原理”的误区——以为递归只是语法糖,可以无限调用。题目最阴险的细节是“必须”二字,看似绝对实则精准;若只背结论不理解“栈帧压入”机制,就会误判。

换个考法:若题目改成“递归算法可以不设置结束条件,只要循环次数足够”,答案会变吗?不会,因为递归本质是函数调用,循环控制无法替代终止条件。刷到类似题时,先问自己“命题人想考我什么”——是考栈机制,还是考递归定义。

同考点真题

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