【问题标题】:Simple recursive binary converter bug简单的递归二进制转换器错误
【发布时间】:2012-06-06 21:13:37
【问题描述】:
def dec2binr(n):
    if n == 1:
        return '1' 
    else: return (str(n%2)+dec2binr(n//2))[::-1]

没有 [::-1] 它返回反转正确的二进制数。 [::-1] 在这种情况下不起作用 - 对于 n=40 Ii 得到:

011000  

当我期望的时候

101000  

没有 [::-1] 我得到 ​​p>

000101

这是相反的,但正确。 为什么会发生这种情况,我该如何解决?

【问题讨论】:

  • 您也需要0 的基本案例。
  • @MartijnPieters 确实如此,但是当0 被传入时,我们返回str(n%2) 与递归函数调用的结果(同样,带有0 的参数)
  • 好点,他需要一个 0.. 的基本情况。

标签: python recursion binary


【解决方案1】:

您需要反转附加字符串的方式。

return dec2binr(n//2) + str(n%2)

问题是,n%2 将读取最低有效位,但您将其附加到字符串的左侧,即最高有效位。

【讨论】:

  • 是的,这是有道理的。谢谢。
【解决方案2】:

发生这种情况是因为您在每次返回时反转,将位弄乱了。从递归返回时不反转,或者仅在返回最终结果时反转(提示:辅助函数)。

【讨论】:

    猜你喜欢
    • 2013-07-08
    • 1970-01-01
    • 2020-06-19
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 2018-08-28
    • 2013-11-30
    • 2012-04-19
    相关资源
    最近更新 更多