递归:指在当前方法内调用自己的这种方法
递归的分类
递归分两种,直接递归和间接递归
1.直接递归称为 方法自身调用自己
2.间接递归:可以用A方法调用B方法 ,B方法调用C方法 C方法调用A方法
注意事项:
递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出
在递归中虽然有限定条件,但是递归次数不能太多,否则也会发生栈内存溢出
构造方法,禁止递归
public class Demo01 {
public static void main(String[] args) {
//a();
b(1);
}
//构造方法,禁止递归 编译报错:构造方法是创建对象使用的,一直递归会导致内存中有无数多个对象,直接编译报错
public Demo01() {
//Demo01(); //编译报错
}
//在递归中虽然有限定条件,但是递归次数不能太多,否则也会发生栈内存溢出 6151 溢出异常
private static void b(int i) {
System.out.println(i);
if (i==10000) {
return;//结束方法
}
b(++i);
}
/*
*
1.递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出
* */
private static void a() {
System.out.println("a方法");
a();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27递归的使用前提:当调用方法的时候,方法的主体不变。每次调用方法的参数不同,可以使用递归递归练习1计算1-n之间的和1+2+3+…+n可以看成n+(n-1)+(n-2)+.....+1已知最大值为n 最小值:1使用递归的前提1.递归的结束条件 获取到1的时候结束2.递归的目的: 获取下一个被加的数字(n-1)public static int sum(int n) {