分类：电脑/网络-程序设计-C/C++
问题：格雷码问题对于给定的正整数n，格雷码为满足如下条件的一个编码序列 
对于给定的正整数n，格雷码为满足如下条件的一个序列：(1) 序列由2n个编码组成，每个编码都是长度为n的二进制位串。(2) 序列中无相同的编码。(3) 序列中位置相邻的两个编码恰有一位不同。例如：n=2时的格雷码为：{00, 01, 11, 10}。设计求格雷码的递归算法并实现一定要递归,谢谢
回答：转载自 

#include <stdio.h>

void putsgray(int a[],int m)
{
 int i;
 for(i=m;i>=1;i--)
 {
  printf("%d",a[i]);
 }
 printf("\n");

}
void gray(int n,int a[],int m)
{
     if(n==1)
     {
 a[n]=1-a[n];
 putsgray(a,m);
     }
     else
     {
 gray(n-1,a,m);
 a[n]=1-a[n];
 putsgray(a,m);
 gray(n-1,a,m);
     }

}

int main()
{
 int a[4]={0};
 putsgray(a,3);
 gray(3,a,3);
}