递归调用机制
1.分析代码一和代码二,深入理解递归调用机制:
T t = new T();
t.Test(4);
代码一:
if(n>2) {
Test(n - 1);
}
System.out.println("n=" + n);
输出结果:
代码二:
if(n>2) {
Test(n - 1);
}else {
System.out.println("n=" + n);
}
输出结果:
分析:代码二中当n=4,3时,进入第一层控制语句;当n=2时,进入else语句。
2.
递归重要规则
1.执行一个方法时,就创建一个新的受保护的独立空间(栈空间)。
2.方法的局部变量是独立的,不会相互影响,比如n变量。
3.如果方法中使用的是引用类型变量(数组,对象),就会共享该引用类型的数据。
4.递归必须向退出递归的条件逼近,否则就是无限递归,出现StackOverflowError(栈溢出)。
5.当一个方法执行完毕,或者遇到return,就会返回,遵守谁调用,就将结果返回给谁,同时当方法执行完毕或者返回时,该方法也就执行完毕,对应的栈空间也会被销毁。