Module: (Python) 子例程。递归


Problem

11/12

迭代第 1 行

Theory Click to read/hide

任务
在部落语言“Tumba-Yumba”的字母表中;四个字母:“K”、“L”、“M”和“N”。需要在屏幕上显示所有由 n 个字母组成的单词,这些单词可以由这个字母表的字母组成

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

Problem

在部落语言的字母表中“tumba-yumba”四个字母:“K”、“L”、“M”和“N”。您需要显示所有由 N  字母组成的单词,这些字母可以从该字母表的字母组成。