我创建了一个递归程序来多次打印消息 Hello,但在编译中因 StackOverflowError 而失败。package com.recre;public class Recursionhello { static void p() { System.out.println("Hello"); p();}public static void main(String[] args) { p(); }}它多次打印输出“Hello”,然后打印以下错误消息。输出 -HelloHelloHelloHelloHelloHelloHelloHelloException in thread "main" java.lang.StackOverflowError at java.io.FileOutputStream.write(Unknown Source) at java.io.BufferedOutputStream.flushBuffer(Unknown Source) at java.io.BufferedOutputStream.flush(Unknown Source) at java.io.PrintStream.write(Unknown Source) at sun.nio.cs.StreamEncoder.writeBytes(Unknown Source) at sun.nio.cs.StreamEncoder.implFlushBuffer(Unknown Source) at sun.nio.cs.StreamEncoder.flushBuffer(Unknown Source) at java.io.OutputStreamWriter.flushBuffer(Unknown Source) at java.io.PrintStream.write(Unknown Source) at java.io.PrintStream.print(Unknown Source) at java.io.PrintStream.println(Unknown Source) at com.recre.Recursionhello.p(Recursionhello.java:5) at com.recre.Recursionhello.p(Recursionhello.java:6) at com.recre.Recursionhello.p(Recursionhello.java:6) at com.recre.Recursionhello.p(Recursionhello.java:6) at com.recre.Recursionhello.p(Recursionhello.java:6) at com.recre.Recursionhello.p(Recursionhello.java:6) at com.recre.Recursionhello.p(Recursionhello.java:6) at com.recre.Recursionhello.p(Recursionhello.java:在这里,我需要有关错误的助手和有关递归的一些解释。
2 回答
catspeake
TA贡献1111条经验 获得超0个赞
Java 中的任何递归程序都必须具有退出条件,如下所示:
public class Recursionhello {
static void p(int times) {
System.out.println("Hello");
if(times > 0) {
p(times - 1);
}
}
public static void main(String[] args) {
p(5);
}
}
添加回答
举报
0/150
提交
取消