講究一個對稱性 javascript export default (n) = { // 遞歸函數,用來算輸入為n的格雷編碼序列 let make = (n) = { if (n === 1) { return ['0', '1'] } else { // 獲取上一回的結果 let prev = m ...
講究一個對稱性
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)
}