Python:递归地将int转换为二进制字符串

Python:递归地将int转换为二进制字符串,python,Python,我试图递归地将int转换为二进制字符串,但我并不真正理解整条正int到二进制字符串的转换是如何工作的 还发现显然每个位置都像2的幂的表示 任何关于如何将正整数转换为字符串表示的解释,如上面谷歌示例所示,都非常有用。Python有一个内置函数: >>> bin(6) "0b110" 反过来说: >>> 0b110 6 下面是一个将int转换为二进制字符串的递归实现,我认为这就是这个问题的目的: def recursive_bin(i): if i =

我试图递归地将int转换为二进制字符串,但我并不真正理解整条正int到二进制字符串的转换是如何工作的

还发现显然每个位置都像2的幂的表示


任何关于如何将正整数转换为字符串表示的解释,如上面谷歌示例所示,都非常有用。

Python有一个内置函数:

>>> bin(6)
"0b110"
反过来说:

>>> 0b110
6

下面是一个将int转换为二进制字符串的递归实现,我认为这就是这个问题的目的:

def recursive_bin(i):
    if i == 0:
        return ''
    elif i < 0:
        return '-' + recursive_bin(-i)
    else:
        return recursive_bin(i>>1) + str(i&1)

将是一个很好的起点。Wny递归?这是某种形式的学习练习吗?或者只是“{:b}”。format6保存切掉“0b”的部分。相反的是int'110',2。你能解释一下如何用2的全部力量来转换它吗?我也想了解它的数学方面。@Jon-这是一个真正的反转-字符串返回int。我有点作弊。我没有意识到有b格式规范。它是否也以%b的形式存在?您可以使用条件表达式将其进一步缩短:return recursive\u bini>>1+stri&1 if I else@mgilson:丢失另一行:recursive\u bin=lambda I:recursive\u bini>>1+stri&1 if I else!为了练习递归,我将可读性置于短代码之上。这些都是很好的建议,但它们对负数不起作用。
# 6 is 110 in binary
recursive_bin(6)
recursive_bin(6>>1) + str(6 & 1)        -> recursive_bin(3) + '0'
recursive_bin(3>>1) + str(3 & 1) + '0'  -> recursive_bin(1) + '1' + '0'
recursive_bin(1>>1) + str(1 & 1) + '10' -> recursive_bin(0) + '1' + '10'
recursive_bin(0) + '110'                -> '' + '110'
# Final result is '110', since the base case of 0 returns an empty string