class Solution {
public:
vector<int> grayCode(int n) {
vector<int> results;
do{
if (n < 0)
break;
else if (n == 0)
{
results.push_back(0);
break;
}
else
{
results = grayCode(n-1);
int length = results.size();
for (int i = length -1 ; i >=0 ; i--)
{
results.push_back(results[i] + (1<<(n-1)));
}
}
}while(false);
return results;
}
};
规律总结 : http://xiaotongchen.me/posts/47
注意
results.push_back(results[i] + (1<<(n-1)));
开始结果怎么都是错,后来注意到是运算符优先级的问题!! 注意 + 优先级高于 <<