使用递归生成所有字母组合的算法

时间:2010-09-12 13:30:40

标签: java

我记得这个有一个特定的名字,各个网站上都有示例代码 - 但我记不起它实际上叫什么,所以找不到任何东西......

基本上,我想在循环中生成所有可能的字母组合。输出将是这样的:

A
B
C
...
Z
AA
AB
AC
---
AZ
BA
BB
BC

等...

2 个答案:

答案 0 :(得分:5)

从数学角度讲,您正在寻找字母表的cartesian power

提供的递归adamk是正确的,但您可以稍微简化一下:

void printAllLetterSequences(String prefix, int length) {
    System.out.println(prefix);
    if (prefix.length() < length)
        for (char c = 'A'; c <= 'Z'; c++)
            printAllLetterSequences(prefix + c, length);
}

答案 1 :(得分:2)

试试这个(伪代码):

function loop(prefix, max_length):
   for c in 'A' to 'Z':
      print prefix + c

   for c in 'A' to 'Z':
      if length(prefix) < max_length:
         loop( prefix + c, max_length)

 loop('', 2 )