猿问

递归程序有一个带有示例方法的 StackOverflowError

我创建了一个递归程序来多次打印消息 Hello,但在编译中因 StackOverflowError 而失败。


package com.recre;


public class Recursionhello {

    static void p() {

        System.out.println("Hello");

    p();

}


public static void main(String[] args) {

    p();

    }

}

它多次打印输出“Hello”,然后打印以下错误消息。


输出 -


Hello

Hello

Hello

Hello

Hello

Hello

Hello

Hello

Exception 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:

在这里,我需要有关错误的助手和有关递归的一些解释。


喵喵时光机
浏览 153回答 2
2回答

catspeake

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);    }}
随时随地看视频慕课网APP

相关分类

Java
我要回答