Python循环中的递归函数

时间:2015-12-06 15:38:47

标签: python loops recursion binary

我创建了一个打印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)

它工作得很好,但我完全错过了使用递归来完成此任务的任务。我已经尝试了很长一段时间来创建一个递归函数并失败了。有什么帮助吗?

1 个答案:

答案 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所有可能的组合以供将来使用,那么这将需要一些小的改动(你可以轻松地改变上述逻辑)。

此外,您可以轻松修改上述内容,以返回01的列表(即data=[]初始参数和data + [0]更新)。