使用递归和三个参数进行排列

时间:2018-10-22 08:50:52

标签: python

Python 非有效的递归函数。实现这样的功能print_01_strings(k,s,n),给定长度为k的字符串s,以字母数字顺序将长度为s的补全的所有可能的0/1字符串打印为长度n。自然,当调用print_01_strings(0,'',n)时,将打印所有长度为n的0/1字符串。

使用以下模式来实现您的解决方案,并随时使用该模式来实现该功能:

def print_01_strings(k, s, n):
 #if k equal to n the function only needs to print s which is unique completion
 #otherwise, we'll print all the completions of the string s+'0' of length k+1
 #and all the completions of the string s+'1' of length k+1

print_01_strings(0,'',5)

我在compsci课堂上有这个问题,对于我一生,我无法回避。我不知道这应该如何工作。输出应该是这样的;

提前谢谢大家,我知道我应该展示一下代码尝试,但是我真的不知道从哪里开始。

-

00000
00001
00010
00011
00100
00101
00110
00111
01000
01001
01010
01011
01100
01101
01110
01111
10000
10001
10010
10011
10100
10101
10110
10111
11000
11001
11010
11011
11100
11101
11110
11111

1 个答案:

答案 0 :(得分:3)

这是递归练习。我不会完全为您完成任务,但是我可以指出一些帮助您入门的提示。

作为参考,这是您应该实现的功能:

def print_01_strings(k, s, n):
  # if k equal to n the function only needs to print s which is unique completion
  # otherwise, we'll print all the completions of the string s+'0' of length k+1
  # and all the completions of the string s+'1' of length k+1

评论告诉您该怎么做:

  • 在基本情况下(“ k等于n”),您应该只“打印s”。
  • 对于递归情况(“否则,...”),您需要使用适当的参数调用print_01_strings两次。
    1. 第一个调用处理“长度为k + 1的字符串s +'0'的补全”。
    2. 第二个调用处理“长度为k + 1的字符串s +'1'的补全”。

尝试找出在每种情况下应将哪些参数传递给对print_01_strings的递归调用。