腾讯2016研发笔试
/* 递归生成格雷码
当n=1时,{0,1}
当n=2时,{00,01,11,10}
当n=3时,{000,001,011,010,110,111,101,100}
...
n位格雷码共有2^n个元素。
其中每个元素是(n-1)位的格雷码前面加0,然后再反向后前面加1生成的。
如n=3可由n=2进行两步操作后得到:
1.在n=2的格雷码前面加0,生成:000,001,011,010
2.在n=2的格雷码逆序后前面加1,生成:110,111,101,100
将两部分顺序输出即得n=3的格雷码。
*/
#include <iostream>
#include <string>
#include <vector>
#include <cmath>
using namespace std;