递归

递归就是方法自己调用自己,每次调用时传入不同的变量。

递归调用规则:
1、当程序执行到一个方法时,就会开辟一个独立的空间(栈)
2、每个空间的数据(局部变量),是独立的。
3、如果方法中使用的是引用数据类型的变量,就会共享该变量。
4、递归必须向退出递归的条件逼近
5、当一个方法执行完毕,或者遇到return,就会返回到调用它的那个方法中,继续执行该方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class RecursionTest {
public static void main(String[] args) {
test(4);
// System.out.println(factorial(3));
}

// 打印
public static void test(int n) {
if (n > 2) {
test(n - 1);
}
System.out.println("n=" + n);

}

// 阶乘
public static int factorial(int n){
if(n==1){
return 1;
}else{
return factorial(n-1)*n;
}
}
}

输出结果:

1
2
3
n=2
n=3
n=4

加入else后输出n=2

斐波那契数列实现

1
2
3
4
5
6
7
8
9
public static int getFeibo(int num){
if(num<=0){
throw new RuntimeException("参数非法!");
}
if(num==1||num==2){
return 1;
}
return getFeibo(num-1)+getFeibo(num-2);
}