所以我已经启动了代码,我知道'else'之后的所有内容可能都是错误的:
def binary(n):
if n < 2:
print (n)
else:
x = (bin(int(n)//2)
print (x)
它应该递归地执行此操作:
>>> binary(0)
0
>>> binary(1)
1
>>> binary(3)
11
>>> binary(9)
1001
我确实需要打印二进制表示而不是返回的功能。
答案 0 :(得分:3)
这不会按预期工作,因为你在两个地方打印,你最终会有多行,例如:
>>> def binary(n):
... if n < 2:
... print n
... else:
... binary(n / 2)
... print n % 2
...
>>> binary(0)
0
>>> binary(1)
1
>>> binary(3)
1
1
>>> binary(9)
1
0
0
1
>>> binary(10)
1
0
1
0
其他答案使用字符串,所以这里有一个列表::)
>>> def binary(n):
... if n < 2:
... return [n]
... else:
... return binary(n / 2) + [n % 2]
...
>>> binary(0)
[0]
>>> binary(1)
[1]
>>> binary(3)
[1, 1]
>>> binary(9)
[1, 0, 0, 1]
>>> binary(10)
[1, 0, 1, 0]
如果你真的想要一个字符串,它就像这样简单::)。
>>> ''.join(map(str, binary(10)))
'1010'
当然,既然你已经发现了函数bin,那么你应该首先做到这一点:
>>> bin(10)[2:]
'1010'
这让我想起了这个:
快乐的编码! :)
答案 1 :(得分:2)
def binary(n):
if n < 2:
return n
else:
return str(binary(n / 2)) + str(n % 2)
print binary(9)
return
而不是print
s,但通常会更好。
答案 2 :(得分:0)
我会让它返回一个字符串而不是直接打印,这会使事情变得更简单。像这样:
def binary(n):
s = str(n % 2)
if n >> 1 > 0:
s += binary(n >> 1)
return s
print binary(9)