您的位置:首页 > 编程语言 > C语言/C++

格雷码递归实现(c++)

2015-09-09 15:27 288 查看
void _GrayCode(int n, vector<string>& graySeq)
{
if(n == 1)
{
graySeq.push_back("0");
graySeq.push_back("1");
return;
}
_GrayCode(n-1, graySeq);
for(int i=0; i<graySeq.size(); ++i) //前面加0
{
graySeq[i] = '0' + graySeq[i];
}
for(int i=graySeq.size()-1; i>=0; --i)//前面加1
{
string temp = graySeq[i];
temp[0] = '1';
graySeq.push_back(temp);
}
return;
}
void GrayCode(int n)
{
if(n < 1)
{
cout << "input error。。。" << endl;
return;
}
vector<string> graySeq;
_GrayCode(n, graySeq);
copy(graySeq.begin(), graySeq.end(), ostream_iterator<string>(cout, "\n"));
}
int main()
{
GrayCode(8);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: