Module: alt programlar. özyineleme


Problem

11/12

Çizgiler üzerinde yineleme

Theory Click to read/hide

Görev
"Tumba-Yumba" kabilesinin dilinin alfabesinde; dört harf: "K", "L", "M" ve "N". Bu alfabenin harflerinden oluşturulabilen n harflerinden oluşan tüm kelimeleri göstermeniz gerekmektedir.

Sorun, daha küçük bir soruna indirgenebilen normal bir kaba kuvvet sorunudur.
Sözcüğün yerine harfleri sırayla koyacağız.
Bir kelimenin ilk konumu alfabenin 4 harfinden (K. L, M, N) biri olabilir.
Önce K harfini koyalım. Ardından, ilk harf K olan tüm değişkenleri elde etmek için, kalan n - 1 konumlarında tüm olası harf kombinasyonlarını numaralandırmanız gerekir. (resme bakın).
Böylece problem n - 1 uzunluğundaki dört problemi çözmeye indirgenmiştir.
 
n karakteri tekrarlayarak yinele
w[0]='K'; // son L-1 karakterlerini tekrarla w[0]='L'; // son L-1 karakterlerini tekrarla w[0]='M'; // son L-1 karakterlerini tekrarla w[0]='N'; // son L-1 karakterlerini tekrarla w - çalışan kelimeyi saklayan bir karakter dizisi.
Böylece özyineleme elde ettik.Problemin çözümünü özyinelemeli bir prosedür şeklinde düzenleyebiliriz. 
Özyinelemenin ne zaman sona ereceğini belirlemek için kalır? Tüm karakterler ayarlandığında, yani ayarlanan karakter sayısı n olur. Bu durumda, ortaya çıkan kelimeyi ekranda görüntülemeniz ve prosedürden çıkmanız gerekir.

C# programı şöyle görünecek.
// w - değiştirilebilir parametre (dize sonucu) // TumbaWords prosedürü alfabeyi bir karakter dizisi olarak iletir, // kelime kelime ve önceden ayarlanmış karakter sayısı (başlangıçta – 0) statik boşluk TumbaWords( string A, ref string w, int N ) { if (N == w.Length) // w.Length - dizideki karakter sayısı {   // tüm karakterler zaten kelimeye ayarlanmışsa,       // o zaman bir dizi çıktısı almak ve prosedürü sonlandırmak gerekir Console.WriteLine(w); geri dönmek; } for ( int i = 0; i
NOT w değişken bir parametredir (sonuç dizesi)!

Problem

Kabile dilinin alfabesinde «tumba-yumba» dört harf: "K", "L", "M" ve "N". Bu alfabenin harflerinden oluşturulabilen n harflerinden oluşan tüm kelimeleri göstermeniz gerekmektedir.
(c) K.Yu. Polyakov