在Java中递归查找ABC的组合

在Java中递归查找ABC的组合,java,recursion,combinations,Java,Recursion,Combinations,我正试图写一个程序,打印出一个人可以用ABC制作的所有图案。 我允许用户决定它应该有多长,但是我在运行程序时遇到了问题,因为我遇到了一个错误,我不知道是什么地方出了问题 private static int userinput; public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("Enter the maximum number

我正试图写一个程序,打印出一个人可以用ABC制作的所有图案。 我允许用户决定它应该有多长,但是我在运行程序时遇到了问题,因为我遇到了一个错误,我不知道是什么地方出了问题

private static int userinput;

public static void main(String[] args)
{
    Scanner input = new Scanner(System.in);

    System.out.println("Enter the maximum number of characters");
    userinput = input.nextInt();
    combos();
}

public static void combos()
{
    combos("");
}

private static void combos(String counter)
{
    if (counter.length() == userinput) //base case
        System.out.println(counter);
    else //recursive case
        combos(counter + "A");
        combos(counter + "B");
        combos(counter + "C");
}

正如rogue提到的,你的区块:

else //recursive case
    combos(counter + "A");
    combos(counter + "B");
    combos(counter + "C");
。。。将只执行组合(计数器+“A”)上下文到
else
语句

无论您的
if
条件如何,都将执行以下递归语句(“B”和“C”)

这可能会导致流量控制出现故障,从而导致
堆栈溢出错误

添加括号以括起您的
else
语句:

else {//recursive case
        combos(counter + "A");
        combos(counter + "B");
        combos(counter + "C");
}

正如rogue提到的,你的区块:

else //recursive case
    combos(counter + "A");
    combos(counter + "B");
    combos(counter + "C");
。。。将只执行组合(计数器+“A”)上下文到
else
语句

无论您的
if
条件如何,都将执行以下递归语句(“B”和“C”)

这可能会导致流量控制出现故障,从而导致
堆栈溢出错误

添加括号以括起您的
else
语句:

else {//recursive case
        combos(counter + "A");
        combos(counter + "B");
        combos(counter + "C");
}

正如rogue提到的,你的区块:

else //recursive case
    combos(counter + "A");
    combos(counter + "B");
    combos(counter + "C");
。。。将只执行组合(计数器+“A”)上下文到
else
语句

无论您的
if
条件如何,都将执行以下递归语句(“B”和“C”)

这可能会导致流量控制出现故障,从而导致
堆栈溢出错误

添加括号以括起您的
else
语句:

else {//recursive case
        combos(counter + "A");
        combos(counter + "B");
        combos(counter + "C");
}

正如rogue提到的,你的区块:

else //recursive case
    combos(counter + "A");
    combos(counter + "B");
    combos(counter + "C");
。。。将只执行组合(计数器+“A”)上下文到
else
语句

无论您的
if
条件如何,都将执行以下递归语句(“B”和“C”)

这可能会导致流量控制出现故障,从而导致
堆栈溢出错误

添加括号以括起您的
else
语句:

else {//recursive case
        combos(counter + "A");
        combos(counter + "B");
        combos(counter + "C");
}

您忘记了“递归案例”中else语句的大括号

这确实有效:

private static void combos(String counter) {
    if (counter.length() == userinput) //base case
        System.out.println(counter);
    else {
        combos(counter + "A");
        combos(counter + "B");
        combos(counter + "C");
    }
}

您忘记了“递归案例”中else语句的大括号

这确实有效:

private static void combos(String counter) {
    if (counter.length() == userinput) //base case
        System.out.println(counter);
    else {
        combos(counter + "A");
        combos(counter + "B");
        combos(counter + "C");
    }
}

您忘记了“递归案例”中else语句的大括号

这确实有效:

private static void combos(String counter) {
    if (counter.length() == userinput) //base case
        System.out.println(counter);
    else {
        combos(counter + "A");
        combos(counter + "B");
        combos(counter + "C");
    }
}

您忘记了“递归案例”中else语句的大括号

这确实有效:

private static void combos(String counter) {
    if (counter.length() == userinput) //base case
        System.out.println(counter);
    else {
        combos(counter + "A");
        combos(counter + "B");
        combos(counter + "C");
    }
}

@线程“main”java.lang.StackOverflower中的John异常位于java.lang.StringBuilder.append中的java.lang.StringBuilder.append(未知源)位于java.lang.StringBuilder。(未知源)@John异常位于线程“main”java.lang.StackOverflower中的java.lang.StringBuilder.append(未知源)位于java.lang.StringBuilder中的John异常。(未知源)@John异常位于线程“main”java.lang.StringBuilder.append(未知源代码)中的java.lang.StackOverflower错误位于java.lang.StringBuilder.append中的java.lang.StackOverflower错误位于java.lang.StringBuilder.append(未知源代码)位于java.lang.StringBuilder中的java.lang.StackOverflower错误位于java.lang.StringBuilder中的@John异常位于java.lang.StringBuilder.append(未知源代码)不太谢谢,我忘了注意到我没有添加括号!这不仅仅是可能的……)谢谢,我忘了注意到我没有添加括号!这不仅仅是可能的……)谢谢,我忘了注意到我没有添加括号!这不仅仅是可能的……)谢谢,我忘了注意到我没有添加括号!