Python 递归函数,用于打印整数的二进制表示形式

Python 递归函数,用于打印整数的二进制表示形式,python,recursion,Python,Recursion,因此,我已经开始编写代码,我知道“else”之后的所有内容都可能是错误的: def binary(n): if n < 2: print (n) else: x = (bin(int(n)//2) print (x) 我确实需要该函数来打印二进制表示,而不是返回。def binary(n): def binary(n): if n < 2: return n else:

因此,我已经开始编写代码,我知道“else”之后的所有内容都可能是错误的:

def binary(n):
    if n < 2:
        print (n)
    else:
        x = (bin(int(n)//2)
        print (x)
我确实需要该函数来打印二进制表示,而不是返回。

def binary(n):
def binary(n):
    if n < 2:
        return n
    else:
        return str(binary(n / 2)) + str(n % 2)


print binary(9)
如果n<2: 返回n 其他: 返回str(二进制(n/2))+str(n%2) 打印二进制文件(9)

返回
s而不是
打印
s,但通常这会更好。

我会让它返回一个字符串而不是直接打印,这会让事情更简单。像这样:

def binary(n):
    s = str(n % 2)

    if n >> 1 > 0:
        s += binary(n >> 1)

    return s

print binary(9)

这将无法按预期工作,因为您在两个位置进行了打印,最终会出现多行,例如:

>>> 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
当然,既然您已经了解了该函数,那么首先您可能应该这样做:

>>> bin(10)[2:]
'1010'
这让我想起了:


快乐编码!:)

嗯,我试过这个,但是当我尝试“二进制(3)”时得到的结果是>>>二进制(3)1'非1'@AngelE:我没有-我得到了“11”。我想出来了,我是在打印而不是返回。但是我需要这个函数来打印并且不能返回,很遗憾:(@AngelE:你不能只说“打印二进制文件(3)”?如果使用python:In[1]:bin(9)Out[1],为什么不使用bin呢:'0b1001'@Ignacio内置bin函数使用他的二进制函数,我们有一个共同的函数?您的答案很好!对于您提供的第一个解决方案,有没有办法使其水平打印?我尝试了“打印(n%2,end=”),但没有成功。
>>> 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(10)[2:]
'1010'