1.什么是递归:方法自己调用自己就是递归
2.递归的分类
直接递归:
间接递归
注意事项”;
1.递归一定要有条件限定,保证递归能够停下来,否则会发生栈内存溢出
2.在递归中虽然有限定条件,但是递归的次数不能太多,否则也会发生栈内存溢出
3.构造方法禁止递归
package Demo09;
public class Demo01Recurison {
public static void main(String[] args) {
// a();
b(1);
}
private static void b(int i) {
System.out.println(i);
if (i == 20000) {
return;// return结束方法
}
b(++i); //注意++i 和 i++的区别 一个是加了再用 一个是用完再加
//这里由于递归的次数太多,也会导致内存溢出报错
}
//1.递归一定要有条件限定,保证递归能够停下来,否则会发生栈内存溢出
private static void a() {
System.out.println("a方法");
a(); //Exception in thread "main" java.lang.StackOverflowError栈内存溢出异常
}
}
为什么会栈内存溢出 主要是当一个方法调用其他方法的时候被调用的方法没有执行完毕的话,当前方法也出不去,会一直等待所以内存栈中会有很多方法内存会满



