package src.com.zhang.recursion;
public class RecursionTest {
public static void main(String[] args) {
System.out.println("执行test1:");
test1(4);
System.out.println("执行test2");
test2(4);
}
public static void test1(int n){
if (n>2){
test1(n-1);
}
else {
System.out.println(n);
}
}
public static void test2(int n){
if (n>2){
test2(n-1);
}
System.out.println(n);
}
}
其中test1的执行结果是2
而test2的执行结果是2,3,4
其中test1(4)进入到递归栈中会执行if语句里面的,不执行else语句,而test1(3)会执行if不会执行else,当执行test1(2)时,执行else,打印出2,然后开始出栈操作,因为test1(3)是除了test1(2)之外最后进栈的,所以回调执行test1(3),但是除了if...else...语句之后没有别的语句了,因此test1(4)也不会再输出
而test2执行时进栈操作是一样的,但是,当函数回调时,会一次执行if语句之后的输出语句,因此输出的是2,3,4
递归需要遵守的原则:
可以使用递归解决的问题: