递归函数
条件1 一个函数 在内部 调用了 自身
条件2 在合适的实际 结束调用(结束递归) 一定要有, 不然就是 死递归
function fn(n) {
return n * fn(n - 1)
}
fn(4)
第一次 调用 传参 4
形参 n == 4
函数体 return n * fn(n - 1) ---> return 4 * fn(3)
计算 fn(3) ---> 计算 3 的阶乘
调用 传参 3
形参 n == 3
函数体 return n * fn(n - 1) ---> return 3 * fn(2)
计算 fn(2) ---> 计算 2 的阶乘
调用 传参 2
形参 n == 2
函数体 return n * fn(n - 1) ---> return 2 * fn(1)
计算 fn(1) ---> 计算 1 的阶乘
调用 传参 1
形参 n == 1
函数体 return n * fn(n - 1) ---> retrun 1 * fn(0)
计算 fn(0) ---> 计算 0 的阶乘
调用 传参 0
形参 n == 0
函数体 return n * fn(n - 1) ---> return 0 * fn(-1)