我创建了一个打印n位长的所有二进制序列的函数:
def print_binary_sequences(n):
if n<1:
return
for i in range(2**n):
s = bin(i)[2:]
s = "0" * (n-len(s)) + s
print(s)
它工作得很好,但我完全错过了使用递归来完成此任务的任务。我已经尝试了很长一段时间来创建一个递归函数并失败了。有什么帮助吗?
答案 0 :(得分:0)
如果你想要的只是print
组合,你可以这样做:
def binary_rec(n, data=''):
if len(data) == n:
print data
else:
binary_rec(n, data + '0')
binary_rec(n, data + '1')
基本上,它将以空解data = ''
开头,它会以2个新解决方案data = data + '0'
和data = data + '1'
递归调用自身。它将递归浏览两个选项,直到存储的结果(data
)的长度为n
。
>>> binary_rec(2)
00
01
10
11
如果你想要的是return
所有可能的组合以供将来使用,那么这将需要一些小的改动(你可以轻松地改变上述逻辑)。
此外,您可以轻松修改上述内容,以返回0
和1
的列表(即data=[]
初始参数和data + [0]
更新)。