return >
return = //Длины строк и все символы равны
== Генерация слов в лексикографическом порядке ==
Попробуем сгенерировать все слова в лексикографическом порядке. Для этого воспользуемся рекурсией.
Параметром для рекурсии будет служить префикс, который мы уже записали. Тогда если наш префикс уже длины <tex> L </tex> (которую мы хотим получить), то запишем получившееся слово, и выйдем из рекурсии. Если длина меньше, то будем приписывать по символу, в порядке от меньшего к большему и снова запускать рекурсию от нового префикса.
Почему это будет работать? Ну давайте проверим определение: мы генерируем слова одинаковой длины, потому проверим пункт 2.
Пусть мы сейчас имеем префикс длины <tex> i </tex> и все строки, начинающихся с префиксов меньших, чем наш уже выведены. Тогда согласно алгоритму мы будем приписывать меньшие символы, и достраивать при помощи рекурсии их до полных строк, то есть перебирать все строки с новым префиксом. А так как мы приписываем символы по увеличению, то все слова с меньшим префиксом мы заведомо переберем, следовательно слова будут в лексикографическом порядке.
Приведем псевдокод генерации:
procedure generate(s : string)
if (len(s) == L)
write(s);
exit;
for i = 'a' .. 'z'
generate(s + i)