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

Java 使用递归生成所有字母组合的算法,java,Java,我记得它有一个特定的名字,在各种网站上都有示例代码-但我不记得它的实际名称,所以找不到任何东西 基本上,我想在一个循环中生成所有可能的字母组合。输出如下所示: A B C ... Z AA AB AC --- AZ BA BB BC 等等。试试这个(伪代码): 函数循环(前缀,最大长度): 对于A中的c到Z: 打印前缀+c 对于A中的c到Z: 如果长度(前缀)

我记得它有一个特定的名字,在各种网站上都有示例代码-但我不记得它的实际名称,所以找不到任何东西

基本上,我想在一个循环中生成所有可能的字母组合。输出如下所示:

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

试试这个(伪代码):

函数循环(前缀,最大长度):
对于A中的c到Z:
打印前缀+c
对于A中的c到Z:
如果长度(前缀)<最大长度:
循环(前缀+c,最大长度)
循环(“”,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);
}
void printallettersequences(字符串前缀,int长度){
System.out.println(前缀);
if(prefix.length()对于(char c='A';c permutations,我认为您正在搜索的关键词是permutations。@wheaties-这些真的不是permutations。“A”、“BA”和“AZ”怎么可能是彼此的置换呢?@adamk在您编辑之前,它读起来就像他想要置换一样。谢谢,我正在尝试将其移植到Java,但我不确定“A”到“Z”中的c是什么”应该是?@Matt:这意味着
c
的范围应该在字母
A
Z
之间。在Java中,您可以使用常规的
for
循环来实现这一点。这是正确的吗?String[]chars={“A”,“b”,“c”};for(String c:chars){for(char c='A';c这是一个漂亮、干净的代码,但是返回结果的顺序与问题(以及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);
}