0089.格雷编码

方法一:对称生成

时间复杂度 $O(2^n)$,空间复杂度 $O(n)$。

func grayCode(n int) []int {
	if n == 1 {
		return []int{0, 1}
	}
	ans := grayCode(n - 1)
	for i := len(ans) - 1; i >= 0; i-- {
		ans = append(ans, ans[i]+1<<(n-1))
	}
	return ans
}