以下C++代码实现 $n$ 位的格雷码,则横线上应填写( )。
#include <iostream>
#include <vector>
#include <string>
using namespace std;
// 生成 n 位的格雷码
vector<string> generate_graycode(int n) {
vector<string> graycode_list;
if (n <= 0) {
return graycode_list;
}
// 初始1位格雷码
graycode_list.push_back("0");
graycode_list.push_back("1");
// 迭代生成 n 位的格雷码
for (int i = 2; i <= n; i++) {
int current_size = graycode_list.size();
for (int j = current_size - 1; j >= 0; j--) {
graycode_list.push_back("1" + graycode_list[j]);
}
for (int j = 0; j < current_size; j++) {
________________________ // 在此处填入代码
}
}
return graycode_list;
}根据上下文和C++语法规则确定空缺处应填的内容,关注函数调用参数、表达式和返回值类型。
填空时注意语法完整性:分号、括号匹配、函数参数类型和个数、返回值类型。
【考点】格雷码生成算法|字符串前缀拼接|迭代修改
GESP六级 C++ 考察算法流程设计与字符串操作的综合能力。命题人意图检测你是否真正理解格雷码的递归构造本质,而非机械套用 push_back。这道题是区分"只会调用库函数"和"懂算法原理"的硬指标。