格雷編碼


講究一個對稱性javascript


export default (n) => {
  // 遞歸函數,用來算輸入爲n的格雷編碼序列
  let make = (n) => {
    if (n === 1) {
      return ['0', '1']
    } else {
      // 獲取上一回的結果
      let prev = make(n - 1)
      let result = []
      let max = Math.pow(2, n) - 1
      for (let i = 0, len = prev.length; i < len; i++) {
        // 保證對稱性
        result[i] = `0${prev[i]}`
        result[max - i] = `1${prev[i]}`
      }
      return result
    }
  }
  return make(n)
}

相關文章
相關標籤/搜索