我創建了一個遞歸程序來多次打印消息 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
提交
取消