GESP 五级 · GESP 202309 C++ 五级 第 5 题

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

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

题目

下面 C++ 代码以递归方式实现字符串反序,横线处应填上代码是( )。

//字符串反序
#include <iostream>
#include <string>
using namespace std;
string sReverse(string sIn) {
    if (sIn.length() <= 1) {
        return sIn;
    } else {
        return ________ // 此处填写代码
    }
}
int main() {
    string sIn;
    cin >> sIn;
    cout << sReverse(sIn) << endl;
    return 0;
}
答案:A

考点

函数与递归

解题思维

这题考递归构造。拿到题先想:反序就是把最后一个字符提到最前面,剩下的继续递归。所以横线必须返回“末尾字符”拼上“去掉末尾后的递归结果”,顺序不能错。

常见错误

最容易栽跟头的是把顺序搞反,写成先递归后半段再拼首位,那样首位就被推到了末尾,字符串没反序。还有,有些同学看到递归就只写函数调用,忘了加上当前层的字符,导致只移动了一位。另外要注意 substr 的第二个参数是长度,不是结束位置,写错参数也会直接编译错误。

详细解析(节选)

【考点】递归构造|字符串操作|栈的后进先出

1. 考纲定位

GESP 五级《算法与程序设计》核心考点。命题人专门卡住那些“会写递归框架但不懂递归构造”的考生——他们知道要递归,但不知道递归函数该返回什么。这道题本质是考你是否理解递归必须构造正确的返回值,而不仅仅是“能递归”。

同考点真题

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