Tugas
Dalam abjad bahasa suku "Tumba-Yumba"; empat huruf: "K", "L", "M" dan "N". Anda perlu memaparkan semua perkataan yang terdiri daripada n huruf yang boleh dibina daripada huruf abjad ini.

Masalahnya ialah masalah kekerasan biasa yang boleh dikurangkan kepada masalah yang lebih kecil.
Kami akan menggantikan huruf secara berurutan untuk perkataan itu.
Kedudukan pertama perkataan boleh menjadi salah satu daripada 4 huruf abjad (K. L, M, N).
Mari kita letakkan huruf K dahulu. Kemudian, untuk mendapatkan semua varian dengan huruf pertama K, anda perlu menghitung semua kemungkinan gabungan huruf dalam baki n - 1 kedudukan dan seterusnya. (lihat gambar).
Oleh itu, masalah dikurangkan kepada menyelesaikan empat masalah panjang n - 1.
 
Lelaran ke atas n aksara secara rekursif
w[0]='K'; // lelaran ke atas aksara L-1 yang terakhir w[0]='L'; // lelaran ke atas aksara L-1 yang terakhir w[0]='M'; // lelaran ke atas aksara L-1 yang terakhir w[0]='N'; // lelaran ke atas aksara L-1 yang terakhir w - rentetan aksara yang menyimpan perkataan yang berfungsi.
Oleh itu, kami mendapat rekursi. Kami boleh mengatur penyelesaian masalah dalam bentuk prosedur rekursif. 
Ia kekal untuk menentukan bila rekursi akan berakhir? Apabila semua aksara ditetapkan, iaitu bilangan aksara yang ditetapkan ialah n. Dalam kes ini, anda perlu memaparkan perkataan yang terhasil pada skrin dan keluar dari prosedur.

Program C++ akan kelihatan seperti ini.
#include<iostream> menggunakan ruang nama std; batal TumbaWords( rentetan A, rentetan &w, int N ) // w - parameter boleh ubah (hasil rentetan) // Prosedur TumbaWords diluluskan abjad sebagai rentetan aksara, // perkataan perkataan dan bilangan aksara yang telah ditetapkan (sebelumnya – 0). { int i; jika (N == w.size()) {   // jika semua aksara telah ditetapkan kepada perkataan,     // maka perlu mengeluarkan rentetan dan menamatkan prosedur cout << w<< endl; kembali; } untuk ( i = 1; i < A.size(); i ++ ) {   // jika syarat di atas adalah palsu (iaitu, tidak semua aksara dijarakkan,   // kemudian dalam gelung kita pergi melalui semua aksara abjad dan // letakkan aksara secara bergantian pada ruang kosong pertama w[N] = A[i]; TumbaWords ( A, w, N+1 ); } } utama() { intn; kata rentetan; intn; cin>> n; word.resize(n); // tambah rentetan kepada saiz n TumbaWords( "KLMN", perkataan, 0 ); }
PERHATIKAN bahawa w ialah parameter boleh ubah (rentetan hasil)!