Python 简单递归二进制转换器错误
如果没有[::-1],它将返回反向的正确二进制数。在这种情况下[:-1]不起作用-对于n=40,Ii get:Python 简单递归二进制转换器错误,python,recursion,binary,Python,Recursion,Binary,如果没有[::-1],它将返回反向的正确二进制数。在这种情况下[:-1]不起作用-对于n=40,Ii get: def dec2binr(n): if n == 1: return '1' else: return (str(n%2)+dec2binr(n//2))[::-1] 当我期待的时候 011000 没有,没有我得到 101000 这是相反的,但正确。 为什么会发生这种情况?我如何修复它?之所以会发生这种情况,是因为每次返回时都会反转,使位
def dec2binr(n):
if n == 1:
return '1'
else: return (str(n%2)+dec2binr(n//2))[::-1]
当我期待的时候
011000
没有,没有我得到
101000
这是相反的,但正确。
为什么会发生这种情况?我如何修复它?之所以会发生这种情况,是因为每次返回时都会反转,使位混乱。要么在递归返回时取消反转,要么在返回最终结果时仅反转(提示:helper函数)。发生这种情况是因为每次返回时都反转,使位混乱。从递归返回时取消反转,或者在返回最终结果时仅反转(提示:helper函数)。您需要反转附加字符串的方式
000101
问题是,
n%2
将读取最低有效位,但您将其追加到字符串的左侧,即最有效的位置。您需要反转追加字符串的方式
000101
问题是,
n%2
将读取最低有效位,但您将其追加到字符串的左侧,这是最有效的位置。您也需要0
的基本大小写。@MartijnPieters确实如此,但是当传入0
时,我们返回str(n%2)
与递归函数调用的结果连接(同样,参数为0
)很好,他需要一个0的基本情况。0
也需要一个基本情况。@MartijnPieters这是真的,但是当传入0
时,我们返回str(n%2)
与递归函数调用的结果连接在一起(同样,参数为0
)很好,他需要0的基本情况。是的,这是有意义的。谢谢。是的,这是有道理的。非常感谢。