日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2016校招腾讯研发岗笔试题---递归法求解格雷码

發布時間:2024/1/23 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2016校招腾讯研发岗笔试题---递归法求解格雷码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目:一組數的編碼中,若任意兩個相鄰的代碼只有一位二進制數不同,則稱這種編碼為格雷碼( Gray Code )。請編寫一個函數,使用遞歸方法生成 N 位的格雷碼。

測試輸入輸出如下
輸入:1
輸出:[“0”,”1”]

思路:使用遞歸法求解,得先找規律
(1)當n=1時候
輸出:[“0”,”1”]

(2)當n=2時候
輸出:[“00”,”01”,”10”,”11”]

(3)當n=3時候
輸出:[“000”,”001”,”010”,”011”,”100”,”101”,”110”,”111”]
………
規律就是輸出的字符串總個數是2的n次方。

第n個輸出的字符串是由第n-1位變換而來,如何變換?
n=3時候的字符串數組如何由n=2的字符串數組變換而來?


“000”
“001”是由前一組(n=2)中的“00”在右側只加了“0”和只加了“1”做到的

“010”
“011”是由前一組(n=2)中的“01”在右側只加了“0”和只加了“1”做到的
……

public static String [] grayCode(int n){String [] result = new String [(int) Math.pow(2, n)];//當前需要返回的字符串數組if(n==1){//退出條件result[0]="0";result[1]="1";return result;}String [] preGrayCode= grayCode(n-1);//第n-1個字符串數組for(int i=0;i<preGrayCode.length;i++){//第n個字符串數組的值由第n-1個字符串數組填充result[i]=preGrayCode[i]+"0";result[result.length-1-i]=preGrayCode[i]+"1";//是對稱填充}return result;}

總結

以上是生活随笔為你收集整理的2016校招腾讯研发岗笔试题---递归法求解格雷码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。