从栈内存,从下往上加载
最后f(1) 到了终结点后返回1,方法消失,进入f2 = 2 * f(1) 一直按照规律执行下去
最后返回给变量result
package com.itheima.d2_recusion;
/**
* 目标:递归的算法和执行流程
*/
public class RecursionDemo02 {
public static void main(String[] args) {
System.out.println(f(5)); //120
}
// 按照规则定义一个计算方法
public static int f(int n){ // 内部计算方法 f(n) = 1 * 2 * 3 * 4 * ...(n-1) * n
// 等价于 f(n) = f(n-1) * n
if (n == 1){ // 终结点 递归的反向必须走向终结点 下面的语句,最后都走向终结点
return 1;
}else {
return f(n-1) * n; // 首先f5进入这个分支变成f4 * n 这里又调用了f方法(相当于自己调用自己 -- 递归)
}
}
}