Я бы согласился с подходом @ saua, если бы вы хотели только конечный результат, но здесь есть небольшое изменение в случае, если вы хотите получить каждый результат.
Обратите внимание, что, поскольку существует 26 ^ 8 (или 208827064576) различных возможных строк, я сомневаюсь, что вы хотите их все. Тем не менее, мой код печатает их вместо хранения только одного в String Builder. (Хотя это не так важно.)
public static void base26(int maxLength) {
buildWord(maxLength, "");
}
public static void buildWord(int remaining, String word)
{
if (remaining == 0)
{
System.out.println(word);
}
else
{
for (char letter = 'A'; letter <= 'Z'; ++letter)
{
buildWord(remaining-1, word + letter);
}
}
}
public static void main(String[] args)
{
base26(8);
}