使用递归生成所有字母组合的算法
我记得这个有一个特定的名字,各种网站上都有示例代码 – 但我记不起它实际上叫什么,所以找不到任何东西……
基本上,我想在循环中生成所有可能的字母组合。 输出将是这样的:
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); }