import java.util.*;
public class GrayCode {
public String[] getGray(int n) {
// write code here n为奇数时 格雷码一共为n的2次方-1(除n=1之外 n=1 总共为两个 0,1) n为偶数 格雷码一共为n的2次方
int m = 1 << n;
// write code here
String[] resStrs = null;
if(n==1){
resStrs = new String[]({"0","1"});
return resStrs;
}
Stringp[] strs = getGray(n-1);
//记录添加的位置
int j = 0;
for(int i=0;i<m;i++){
if(i<m/2){ //分为两半 小于m/2就在前面添加0
strs = "0" + strs[j++]; //先执行在++
}else{
strs = "1" + strs[j--]; //如果传入的n是2的话。到这步 j变成2了, strs中索引为2是空的。所以需要--
}
}
return strs;
}
}
简单格雷码,运用递归
最新推荐文章于 2023-03-17 10:58:13 发布