递归
概念
- 方法自己调用自己,每次调用时传递不同的变量。
- 有助于解决复杂问题,同时可以让代码简洁。
规则
- 当程序执行到一个方法时就会开辟一个独立的空间(栈)
- 每个空间的数据(局部变量),是独立的
- 必须向退出递归条件逼近
- 当一个方法执行完毕,或者遇到return,就会返回,遵守谁调用,就将结果返回给谁,同时当方法执行完毕或者返回时,该方法也就执行完毕
示例:
public static void main(String[] args) {
// 通过打印问题回顾递归调用机制
test(4);
}
public static void test(int n) {
if(n>2) {
test(n-1);
}
System.err.println("n = " + n);
}
结果:
n = 2
n = 3
n = 4
图解:
阶乘问题
// 阶乘问题
public static int factorial(int n) {
if(n == 1) {
return 1;
} else {
return factorial(n-1)*n;
}
}
// n=3 res=6