參考: 格雷碼的實現html
vector<string> getGrayCode(int num) { vector<string> result(num); if(num==1) { result[0]="0"; result[1]="1"; return result; } vector<string> last=getGrayCode(n-1); for(int i=0;i<last.size();i++) { result[i]="0"+last[i]; result[result.size()-1-i]="1"+last[i]; } return result; }
格雷碼還有一種實現方式是根據這個公式來的 G(n) = B(n) XOR B(n+1), 這也是格雷碼和二進制碼的轉換公式。代碼以下:面試
public void getGrayCode(int bitNum){ for(int i = 0; i < (int)Math.pow(2, bitNum); i++){ int grayCode = (i >> 1) ^ i; System.out.println(num2Binary(grayCode, bitNum)); } } public String num2Binary(int num, int bitNum){ String ret = ""; for(int i = bitNum-1; i >= 0; i--){ ret += (num >> i) & 1; } return ret; }
參考:http://www.mitbbs.com/article_t/JobHunting/32003667.htmlgoogle