递归的概念:自己调用自己,每次调用时传入不同变量,让代码变简洁。
递归调用规则:
1.当程序执行到一个方法时,就会开辟一个独立的空间(栈)
2.局部变量相互独立,不会相互影响
3.递归必须设置退出条件(收敛)
4.执行完毕,返回
打印问题
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
阶乘问题:
public static int factorial(int n){
if (n==1){
return 1;
}
else{
return factorial (n-1*n);
}
}
递归解决的问题
1.数学问题:8皇后、汉诺塔、迷宫
2.算法问题:快排,归并排序,二分查找、分治算法
3.用栈解决的问题使用递归更简洁