在Java中递归查找ABC的组合
我正试图写一个程序,打印出一个人可以用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
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(未知源代码)不太谢谢,我忘了注意到我没有添加括号!这不仅仅是可能的……)谢谢,我忘了注意到我没有添加括号!这不仅仅是可能的……)谢谢,我忘了注意到我没有添加括号!这不仅仅是可能的……)谢谢,我忘了注意到我没有添加括号!