您的代码会填满堆栈,然后一旦堆栈已满,它就会触发 catch 语句。之后,其余代码继续触发......每个错误消息都是一个递归调用。您的代码正在按照您的编程方式工作。
如果您想要一个在之前和之后执行操作并具有退出条件的递归示例,那么以下应该作为您的示例(使用打印语句来阐明堆栈上发生的事情)。
例子:
public class RecurseExample {
public static void main(String[] args) {
System.out.println("hi");
doIt(1);
System.out.println("bye");
}
private static void doIt(int i){
if (i <= 3){
System.out.println("i before: " + i);
doIt(++i);
System.out.println("i after: " + i);
} else {
System.out.println("this is where the recursion stops and the execution will continue to unravel the stack");
}
}
}
输出:
hi
i before: 1
i before: 2
i before: 3
this is where the recursion stops and the execution will continue to unravel the stack
i after: 4
i after: 3
i after: 2
bye