递归
一:递归的概念
简单来说,递归就是方法自己调用自己,每次调用时候传入的参数是不一样的
二:代码
代码示例:
package cn.littleworm;
public class Test {
public static void main(String[] args) {
int n = 5;
test1(n);
}
public static void test1(int n){
if (n>2){
test1(n-1);
}
System.out.println(n);
}
}
结果:
以上图片中为递归结果,从上代码中可以看出,n初始值为5,调用test方法,判断条件n大于2,所以进入if体内,进行自调用,只不过这时,传入test的参数就是n-1,为4了,但需要注意的是,当执行参数为4的test方法时,还在if语句体内,没有出n=5的条件语句体。以下同理。当n等于2的时候,判断条件不成,执行下面的打印操作,打印为2,然后在打印3…到5。下面使用图解的方式来进行演示。
三:图解演示
四:使用递归时需要注意的要求
- 执行一个方法时,就是在创建一个新的受保护的独立空间(栈空间)
- 方法的局部变量是独立的,不会相互影响
- 如果方法中使用的是引用类型,如数组,就会共享该引用类型的数据
- 递归必须向推出递归 的条件逼近。否则就会无限递归,造成栈溢出的错误
- 当一个方法执行完毕时,或者遇到return,就会返回,并且遵守谁调用就将结果返回给谁,同时当发执行完毕之后,或者返回时,该方法也就执行完毕了。