用递归实现生成Gray码的算法

Gray码是一种数字编码方式,是一个长度为
如:
当n= 1时
0
1
当n= 2时
00
01

11
10
当n= 3时
000
001
011
010

110
111
101
100
从以上可以看出,gray的规律
m = pow(2, n);
gray(n) = 0gray(n-1) (k < m/2)

          1rgray(n-1) (k >= m/2, rgray()是gray序列的逆序)

java代码实现:

public class Gray {
	
	public static char[][] gray(int n) {
		int m = (int)Math.pow(2, n);
		char g[][] = new char[m][n];
		char g1[][];
		if(n <1) {
			System.err.println("the number of n should larger than zero!");
			return null;
		} else if(1 == n){
			g[0][0] = '0';
			g[1][0] = '1';
		} else if(n > 1){
			 g1 = gray(n-1);
			for(int i=0; i


你可能感兴趣的:(算法)