递归: 递 + 归 的操作
将大问题化解成小问题的过程。为什么可以化解,是因为大问题的处理方式和小问题的处理方式是一样的。
1、要调用自己本身;
2、要有一个趋于终止的条件。
下面以一个求阶乘的例子简单介绍一下:
public class recursion {
public static int fac(int n) {
if(n == 1){
return 1; //终止条件
}
return n * fac(n-1); //调用自身
}
public static void main(String[] args) {
System.out.println(fac(5));
}
}
// 运行结果: 120
下面为递归的过程:(第一个维度)
第二个维度: 方法的调用,需要在栈上开辟内存
栈是先进后出的
先调用 fac(5),逐步调用 fac(4)…… 直到终止条件
压栈 的过程就是 递 的过程
只要遇到终止条件 return,函数结束,逐步返回 fac(n) 的值
出栈 的 过程就是 归 的过程