Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 简单递归二进制转换器错误_Python_Recursion_Binary - Fatal编程技术网

Python 简单递归二进制转换器错误

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 这是相反的,但正确。 为什么会发生这种情况?我如何修复它?之所以会发生这种情况,是因为每次返回时都会反转,使位

如果没有[::-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  
这是相反的,但正确。
为什么会发生这种情况?我如何修复它?

之所以会发生这种情况,是因为每次返回时都会反转,使位混乱。要么在递归返回时取消反转,要么在返回最终结果时仅反转(提示:helper函数)。

发生这种情况是因为每次返回时都反转,使位混乱。从递归返回时取消反转,或者在返回最终结果时仅反转(提示:helper函数)。

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

000101

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

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

000101

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

您也需要
0
的基本大小写。@MartijnPieters确实如此,但是当传入
0
时,我们返回
str(n%2)
与递归函数调用的结果连接(同样,参数为
0
)很好,他需要一个0的基本情况。
0
也需要一个基本情况。@MartijnPieters这是真的,但是当传入
0
时,我们返回
str(n%2)
与递归函数调用的结果连接在一起(同样,参数为
0
)很好,他需要0的基本情况。是的,这是有意义的。谢谢。是的,这是有道理的。非常感谢。