首页 > 其他 > 详细

89. 格雷编码

时间:2020-01-27 19:48:25      阅读:77      评论:0      收藏:0      [点我收藏+]

又是一道递归题,答案作者写的都相当精妙,不过可读性就很差了,难受。

 

本题是要使得将前 2^n 个数字,按一定二进制顺序排序。

 

我想,如果我设计一个按从小到大排列的递归算法会是怎么样的:

 

def nums2list(self,n):

  if n == 0:

    return [0]

  res = []

  def getList(str):

    if len(str) == n:

      res.append(int(str,2))

    else:

      getList(str+‘0‘)

      getList(str+‘1‘)

  getList(‘‘)

  return res

 

可能是这样的,但是出来的可能就是 01234567

如果要让他们带顺序,就要在递归的时候就表现出顺序,不能每次都是先递归 getList(str + ‘0‘) 或者说 +‘0’ 和 + ‘1’ 的 必须有一定的规律。

 

顶层:

  一个str有两个方向,+ ‘0’ 或者 +‘1’

  getList(str+‘0‘)

  getList(str+‘1‘)

底层:

  if len(str) == n:

    res.append(int(str,2))

    

 

89. 格雷编码

原文:https://www.cnblogs.com/ChevisZhang/p/12236638.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!