在Python中使用递归生成给定长度的所有二进制字符串的最佳方法是什么?
我现在正在研究递归,并尝试构建一些代码来生成给定长度“n”的所有二进制字符串。 我找到了一个用于循环的代码:在Python中使用递归生成给定长度的所有二进制字符串的最佳方法是什么?,python,algorithm,recursion,binary,Python,Algorithm,Recursion,Binary,我现在正在研究递归,并尝试构建一些代码来生成给定长度“n”的所有二进制字符串。 我找到了一个用于循环的代码: n = 5 for i in range(2**n, 2**(n+1)): print(bin[i][3:]) 但是有没有其他方法可以用递归来解决这个问题呢? 谢谢大家! 很难确定哪种方式是“最好的”;) 我们必须向当前字符串中添加零或一,然后转到下一个递归级别 停止条件达到所需长度(此处n-1,因为我们必须提供与您的示例相对应的前导条件) MBo给出的答案不是输入2和3的正确
n = 5
for i in range(2**n, 2**(n+1)):
print(bin[i][3:])
但是有没有其他方法可以用递归来解决这个问题呢?
谢谢大家! 很难确定哪种方式是“最好的”;) 我们必须向当前字符串中添加零或一,然后转到下一个递归级别 停止条件达到所需长度(此处
n-1
,因为我们必须提供与您的示例相对应的前导条件)
MBo给出的答案不是输入2和3的正确答案 例如。 投入:2 输出应为: 0 0 01 10 11 投入:3 输出应为: 0 0 0 01 0110 01 100 101 110 11 我修改了相同的代码如下
def genbin(n, bs=''):
if len(bs) == n:
print(bs)
else:
genbin(n, bs + '0')
genbin(n, bs + '1')
genbin(3)
000
001
010
011
100
101
110
111
您可以共享一些示例输入和输出吗?如果输入=2,则输出应为00、01、10、11
def genbin(n, bs=''):
if len(bs) == n:
print(bs)
else:
genbin(n, bs + '0')
genbin(n, bs + '1')
genbin(3)
000
001
010
011
100
101
110
111