资源描述
格雷码问题解答:
#include <stdio.h>
#include<stdlib.h>
char *p;
void ZX(int n,char* s); //正序输出格雷码
void FX(int n,char* s); //反序输出格雷码
void FX(int n,char* s)
{
if(n == 0)
{
printf("%s ",p);
return;
}
*s = '1';
ZX(n-1,s+1);
*s = '0';
FX(n-1,s+1);
}
void ZX(int n,char* s)
{
if(n == 0)
{
printf("%s ",p);
return;
}
*s = '0';
ZX(n-1,s+1);
*s = '1';
FX(n-1,s+1);
}
void GBC(int n)
{
char *s = (char*)malloc(n+1);
p= s;
s[n] = '\0';
ZX(n,s);
free(s);
}
int main()
{
int n = 1;
while(n != 0)
{
printf("N=");
scanf("%d", &n);
GBC(n);
printf("\n");
}
return 0;
}
展开阅读全文