我正在尝试编写一个程序,该程序在给定输入数字(位数)的情况下生成所有二进制代码。例如,如果用户输入 3,它应该生成以下所有数字:
000
001
010
011
100
101
110
111
该函数称为 generateBinaryCode(),它必须是递归的(这是问题的挑战)。
以下是我的尝试,但它不起作用。谁能给我一些见解?
提前致谢。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<string> generateBinaryCode(int nBits);
int main()
{
int input;
while (true)
{
cout << "Enter an integer (any negative numbers are sentinel): ";
cin >> input;
if (input < 0) break;
for (unsigned i = 0; i < generateBinaryCode(input).size(); i++)
cout << generateBinaryCode(input).at(i) << endl;
}
return 0;
}
vector<string> generateBinaryCode(int nBits)
{
vector<string> result;
int size = result.size();
std::vector<string>::iterator it;
if (nBits == 1) {
result.push_back("0");
result.push_back("1");
} else {
result = generateBinaryCode(nBits - 1);
for (unsigned int i = 0; i < result.size(); i++)
{
result.push_back("0" + result.at(i));
result.at(i) = "1" + result.at(i);
}
}
return result;
}