과제
"Tumba-Yumba" 부족 언어의 알파벳으로; 네 글자: "K", "L", "M" 및 "N". 이 알파벳의 문자로 만들 수 있는 n개의 문자로 구성된 모든 단어를 화면에 표시해야 합니다
문제는 더 작은 문제로 축소될 수 있는 일반적인 무차별 대입 문제입니다.
단어를 순차적으로 문자로 대체합니다.
단어의 첫 번째 위치는 알파벳 4자(
K, L, M, N) 중 하나일 수 있습니다.
먼저 문자 'K'를 먼저 입력합니다. 그런 다음 첫 번째 문자 'K'로 모든 변형을 가져오려면 나머지
n-1에서 가능한 모든 문자 조합을 열거해야 합니다. 코드> 위치 및 .etc. (그림 참조)
따라서 우리는 재귀 솔루션을 생각해 냈습니다. 루프에서 가능한 모든 첫 글자를 살펴보고 (알파벳의 각 글자를 처음에 차례로 배치) 각 경우에 대해 가능한 모든 "꼬리"를 만듭니다. 길이 <코드>n-1코드>.
문자 반복 반복
나머지 부분이 비어 있을 때(n = 0
), 즉, 재귀를 중지하고 완성된 단어를 출력해야 합니다. 모든 문자가 이미 선택되었습니다.
재귀 절차는 다음과 같습니다.
<예비>
def TumbaWords(단어, 알파벳, n):
n < 1:
인쇄(단어)
반품
알파벳 c의 경우:
TumbaWords(단어+c, 알파벳, n - 1)