代码
public class Solution {
public IList<int> GrayCode(int n) {
List<int> result=new List<int>();
result.Add(0);
for(int i=0;i<n;i++)
{
int temp=result.Count();
for(int j=0;j<temp;j++)
{
result.Add(result.ElementAt(temp-1-j)+(int)Math.Pow(2,i));
}
}
return result;
}
}
思路
利用递归的思想
例如n=2时 list中有0 1 3 2
若想得到n=3时的序列 可以利用上一级序列相邻两数之间只差一位的特点
将最前面多出的一位变成1即可 只是要倒序
多出一位1可以看成是加2^n次方