●递归的概念
1、递归就是方法自己调用自己,每次调用时传入不同的变量。
2、递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。
●递归的调用规则
1、当程序执行到一个方法时,就会开辟一个独立的空间(栈)。
2、每个空间的数据(局部变量)是独立的。
示例:
public static void main(String args[]){
test(4);
}
public static void test(int n){
if(n>2){
test(n-1);
}
System.out.println("n="+n)
过程分析图:
运行结果:
n=2
n=3
n=4
●递归解决的问题
1、数学问题:8皇后、汉诺塔、阶乘、迷宫问题等;
2、快排、归并排序、二分查找、分治算法;
3、可以将栈的相关问题转化为递归问题,更简单方便。
●递归需要遵守的重要规则
1、执行一个方法时,就创建一个新的受保护的独立空间(栈空间)。
2、方法的局部变量是独立的,坏会相互影响,比如上面示例中的n变量。
3、如果方法中使用的是引用类型变量(比如数组),就会共享该引用类型的数据。
4、递归必须向退出递归的条件逼近,否则就是无限递归,会出现StackOverflowError。
5)、当一个方法执行完毕,或者遇到return, 就会返回,遵守谁调用,就将结果返回给谁,同时当方法执行完毕或者返回时,该方法也就执行完毕。