任务
在部落语言“Tumba-Yumba”的字母表中;四个字母:“K”、“L”、“M”和“N”。需要在屏幕上显示所有由 n 个字母组成的单词,这些单词可以由这个字母表的字母组成
这个问题是一个普通的蛮力问题,可以简化为一个更小的问题。
我们将依次用字母替换单词。
单词的第一个位置可以是字母表中的 4 个字母之一 (
K, L, M, N)。
首先,将字母“
K”放在首位。然后,为了得到第一个字母为'
K'的所有变体,你需要枚举剩下的
n-1中所有可能的字母组合 code> positions and .etc. (见图)
因此,我们想出了一个递归的解决方案:在一个循环中,遍历所有可能的第一个字母(依次将字母表中的每个字母放在首位)并为每种情况构建所有可能的“尾巴”;长度n-1
.
字符的递归迭代
当剩余部分为空(n = 0
)时,您需要停止递归并输出完成的单词,即所有字母都已被选中。
递归过程如下所示:
<前>
def TumbaWords(单词,字母表,n):
如果 n < 1:
打印(单词)
返回
对于字母表中的 c:
TumbaWords(单词+c,字母表,n - 1)