递归的组成
- 递归头:什么时候不调用自身方法
- 递归体:什么时候需要调用自身方法
package com.milkyFog.JavaSE;
public class Recursion {
public static void main(String[] args) {
// 5! =5*4*3*2*1
System.out.println(factorial(5));
}
public static int factorial(int n) {
if (n == 1) {//递归头:决定什么时候不再递归,当参数值为1时返回1
return 1;
} else {//递归体:什么时候需要调用自身方法,当参数值不为1的时候继续调用自身
return n * factorial(n - 1);
}
}
}
递归的过程
- 调用求阶乘这个函数时,前面调用的都是递归体,会在内存中以栈模式(先进后出)存储。
- main函数是最底部,最上面是递归头factorial(1)
- 递归的模式从下往上堆积函数,然后从上面逐渐出栈,将值递归回来