递归的概念
-
指在当前方法内调用自己的这种现象
递归分类
-
直接递归
-
间接递归
直接递归
方法自身调用自己
间接递归
可以A方法调用B方法,B方法调用C方法,C方法调用A方法
注意事项
-
递归一定有条件限定,保证递归能够停下来,否则会发生栈内存溢出(抛出这个异常)
-
递归次数不能太多,否则也会发生栈内存溢出
-
构造方法禁止递归
-
构造方法是创建对象使用,一直递归会导致内存中有无数多个对象,直接编译报错
-
递归使用的前提
当调用方法的时候,方法的主体不变,每次调用方法的参数不同,可以使用递归
递归中方法的创建过程
递归实例:
package PracticeReview.Recursion;
/**
* 练习调用递归
* @since JDK 1.8
* @date 2021/07/23
* @author Lucifer
*/
public class RecursionDemoNo1 {
public static void main(String[] args) {
// a();
b(1);
}
private static void b(int i) {
System.out.println(i);
if (i==10000){
return;
}
b(++i);
/*
栈内存有一定的大小,超过这个大小会造成内存溢出
*/
}
/*
递归一定有条件限定,保证递归能够停下来,否则会发生栈内存溢出,
*/
private static void a() {
System.out.println("a方法");
a();
}
}