被问及亚马逊第一轮电话面试
for Length = 1
0 1 (0 1)
长度= 2
00 01 11 10 (0,1,3,2)
等等
写入长度为x的函数,返回以10为基数的数字
这就是所谓的灰色代码,有几种不同的类型,其中一些比其他的更容易构建。维基百科的文章展示了一种从二进制代码转换为灰色代码的非常简单的方法:
unsigned int binaryToGray(unsigned int num)
{
return (num >> 1) ^ num;
}
使用该方法,您只需遍历一定大小的所有数字,将它们放入该函数,然后按照您的需要打印它们。
这是一种方法:
int nval = (int)Math.Pow(2 , n);
int divisor = nval/2;
for (int i = 0; i < nval; i++)
{
int nb =(int) (i % divisor);
if ( nb== 2) Console.WriteLine(i + 1);
else if (nb == 3) Console.WriteLine(i - 1);
else Console.WriteLine(i);
}