代码拉取完成,页面将自动刷新
package main
import "fmt"
func grayCode(n int) (res []int) {
num , ibook := 0 , make([]int,n,n)
for i := range ibook {
ibook[i] = -1
}
var depth func (floor int)
depth = func(floor int) {
if floor == n {
res = append(res, num)
return
}
inputV := 0
floorV := 1 << (n - floor -1)
for i := 0 ; i < 2 ; i ++ {
if i == 0 {
if ibook[floor] < 0 {
ibook[floor] = 0
inputV = 0
}else if ibook[floor] == 0 {
inputV = 0
}else if ibook[floor] == 1 {
inputV = 1
}
v := inputV * floorV
num += v
depth(floor + 1)
num -= v
}else {
if inputV == 1 {
ibook[floor] = 0
depth(floor + 1)
}else {
ibook[floor] = 1
v := floorV
num += v
depth(floor + 1)
num -= v
}
}
}
}
depth(0)
return res
}
func main() {
fmt.Println(grayCode(3))
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。