Python十进制转二进制递归

新手上路,请多包涵

我正在编写一个带有参数“n”的函数,该函数将使用递归公式将十进制数转换为二进制数。

这就是我所拥有的非递归函数,但我需要弄清楚如何递归地编写它。

 def dec2bin(n):
    bStr = ''
    if n < 0:
        return 'Must be a positive integer'
    elif n == 0:
        return '0'
    else:
        bStr += str(n%2)
    return bStr

原文由 user2553807 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 536
1 个回答

你的代码几乎没问题。您实际上不必维护 bStr 。 Suppose you know the binary representation of n//2 then binary representation of n is binary representation of n//2 and 0 if n21 整除。

比如 n = 3n//2 = 1dec2bin(n//2) = '01' so dec2bin(n) = '01'+'1' [because 3 is not evenly divisible by 2 ] = '011'

你的代码应该是这样的。

 def dec2bin(n):
    if n < 0:
        return 'Must be a positive integer'
    elif n == 0:
        return '0'
    else:
        return dec2bin(n//2) + str(n%2)

就这样。

原文由 rnbguy 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题