def dectoBin(n):
for num in n:
if num == 0:
return ''
else:
return dectoBin(num/2) + str(num % 2)
请有人帮忙吗?
答案 0 :(得分:0)
您的代码应该是这样的:
def dectoBin(num):
if num == 0:
return ''
else:
return dectoBin(num/2) + str(num % 2)
这就是递归的工作原理。你不需要代码中的for循环。
修改强>
def dectoBin(num):
if num == 0:
return '0'
elif num == 1:
return '1'
else:
return dectoBin(num/2) + str(num % 2)
for i in range(257):
print(dectoBin(i))
我已经更新了代码,因此也可以考虑0。另请注意,如果您想要转换为256并且包括256,则需要在257范围内。
答案 1 :(得分:0)
您的循环永远不会超过n
中的第一个值,因为您return
。另外,您的递归调用会传递一个数字,而不是列表。
最明确的解决方案是让一个函数通过列表,转换值并收集结果,然后只需转换一个数字。