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

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

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

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

等等…

试试这个(伪代码):

 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 ) 

从数学上讲,你正在寻找字母表中的笛卡尔幂 。

提供的递归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); }