十进制到二进制Python R2L格式

十进制到二进制Python R2L格式,python,recursion,binary,Python,Recursion,Binary,我正在尝试使用递归将整数转换为R2L二进制格式的列表。我一直得到一个错误,int对象是不可编辑的。这是我的密码 def decimalToBinary(x): list1 = [] if x == 0: return [] elif x > 1: list1 += 0 return decimalToBinary(x//2) else: list1 += 1 return lis

我正在尝试使用递归将整数转换为R2L二进制格式的列表。我一直得到一个错误,int对象是不可编辑的。这是我的密码

def decimalToBinary(x):
    list1 = []
    if x == 0:
        return []
    elif x > 1:
        list1 += 0
        return decimalToBinary(x//2)
    else:
        list1 += 1
        return list1
我不明白这个问题,请帮忙

更新:将代码更改为:

def decimalToBinary(x):
    list1 = []
    if x == 0:
        return []
    elif x > 1:
        list1 += [0]
        return decimalToBinary(x//2)
    else:
        list1 += [1]
        return list1
        

如果我输入8,它将返回
[1]
,它应该返回
[0,0,0,1]
,正如我写的,首先,你不应该总结
int
list
。 其次,没有理由在递归中实现它,您可以这样实现它:

def decimalToBinary(x):
    binary_rep = []
    while x!=0:
        binary_rep.append(str(x%2))
        x=int(x/2)
    binary_rep.reverse()
    return binary_rep
        
print(decimalToBinary(50))
print(int(''.join(decimalToBinary(50)),2))
输出:

['1', '1', '0', '0', '1', '0']
50
110010
第二种方法是将int的字符串表示形式转换为二进制,如下所示:

n=50
print(bin(n).replace("0b", ""))
输出:

['1', '1', '0', '0', '1', '0']
50
110010

递归是必须实现的吗?

您可以使用premade
bin()
函数

def decimal_to_binary(x):
    return bin(x)[2:]

print(decimal_to_binary(12))

将打印
1100

或者,使用list()函数:

def decimal_to_binary(x):
    return list(bin(x)[2:])


print(decimal_to_binary(12))


打印:
['1','1','0','0']

如果您想将项附加到列表中,请使用
。附加
,不要在int-ans列表之间使用+,我尝试过使用它,但它只返回[1],出于某种原因,它不会返回任何内容请查看我的答案,我想这就是您要查找的内容。