带前缀的Java递归ABC生成器

我有一个递归 ABC 生成器方法。


public static void ABCgenerator(String from, int letters) {

        if (from.length() == letters) {

            System.out.println(from);

        } else {

            ABCgenerator(from + "a", letters);

            ABCgenerator(from + "b", letters);

            ABCgenerator(from + "c", letters);

        }

    }

当我使用这些参数运行它时,ABCgenerator("a", 3);它给了我:


aaa

aab

aac

aba

abb

abc

aca

acb

acc

相反,我想在运行时获得以下信息ABCgenerator("a", 3);:


aaaa

aaab

aaac

aaba

aabb

aabc

aaca

aacb

aacc

abaa

abab

abac

abba

abbb

abbc

abca

abcb

abcc

acaa

acab

acac

acba

acbb

acbc

acca

accb

accc

问题是我只能更改方法的 body。


输入参数的类型和数量必须保持不变,1 String + 1 int。


该方法必须保持递归。


我怎样才能做到这一点?


九州编程
浏览 201回答 1
1回答

侃侃无极

public static void ABCgenerator(String from, int lettersLeft) {        lettersLeft--;        if (lettersLeft + 1 == 0) {            System.out.println(from);        } else {            ABCgenerator(from + "a", lettersLeft);            ABCgenerator(from + "b", lettersLeft);            ABCgenerator(from + "c", lettersLeft);        }    }}这是正确的解决方案。不是每次都计算输入字符串的整个长度,我们只是计算函数仍然需要生成多少个字母,当它达到零时,“最后一个”实例不会调用其他实例,只会打印结果。我想要一些可以生成具有给定长度和固定前缀的字母 abc 的所有组合的东西,就像那样。它给出了示例中提供的所需输出。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java