老师,你这个代码最后是怎么把十进制转化为2进制,是用parseInt(x,2)吗,但是我为啥还是转化不成功
来源:3-9 格雷编码-代码演示

慕村4810629
2019-05-20
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
}
}
for (let j = 0; j < Math.pow(2, n) - 1 - 1; j++) {
make[n] = parseInt(make[n], 2);
}
return make(n)
3回答
-
布罗利00
2020-03-17
const make = n => { if (n === 0) return [0] if (n === 1) { return ['0', '1'] } else { const prev = make(n - 1) const max = Math.pow(2, n) - 1 // 最后一项索引值 const result = [] for (let i = 0, len = prev.length; i < len; i++) { result[i] = `0${prev[i]}` // 对称索引 0 1 result[max - i] = `1${prev[i]}` // 对称索引 3 2 } return result } } const grayCode = n => { const binaryCode = make(n) // 二进制转十进制 return binaryCode.map(item => parseInt(item, 2)) } console.log(grayCode(2))
00 -
nkliyc
2019-06-16
export default (n) => {
if(n === 0) {
return [0]
}
let make = (n) => {
if(n === 1) {
return ['0', '1']
} else {
let pre = make(n - 1)
let max = Math.pow(2, n) -1
let result = []
for(let i = 0, len = pre.length; i < len; i++) {
result[i] = `0${pre[i]}`
result[max - i] = `1${pre[i]}`
}
return result
}
}
let binaryToDecimal = (binStr) => {
let decimal = 0
for(let i=0, len = binStr.length; i < len; i++) {
decimal += parseInt(binStr[i]) * Math.pow(2, len - 1 - i)
}
return decimal
}
return make(n).map(item => binaryToDecimal(item))
}
00 -
快乐动起来呀
2019-05-22
这里的二进制不是通过十进制转换的,你看看是从 0,1开始,然后变成00,10这种二进制,仔细看下代码就理解了,也可以console.log每个变量
00
相似问题