题目:生成格雷码。即下一个数和上一个数比只有一个位不同。
分析:格雷码的特点,是n位格雷码和是的前一半是n-1位格雷码前面+0,后一半是n-1为格雷码倒序且前面+1
0 0 0
0 0 1
0 1 1
0 1 0
答案:
用递归:
class Solution {
public:
vector<int> grayCode(int n) {
vector <int> res;
if (0 == n){
res.push_back(0);
return res;
}else{
res = grayCode(n-1);
int half_size = res.size();
for (int i = half_size-1; i >=0; i--){
int temp = res[i] + (1<<(n-1));
res.push_back(temp);
}
return res;
}
}
};