递归函数:通俗来讲就是函数自己调用自己
在编程世界里面,递归函数是在一个函数通过名字调用自身情况下构成的,即函数内部调用函数本身。
递归需要有边界条件、递归前进段和递归返回段
// 当边界条件不满足时,递归前进;当边界条件满足时,递归返回
// 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
// 案例:求阶乘
// 5! = 5 * 4 * 3 * 2 * 1 ==> 5 * 4!
// 4! = 4 * 3!
// 3! = 3 * 2!
// 2! = 2 * 1!
// 1! = 1 // 递归结束条件,递归出口
function jc(n) {// n = 5
if (n === 1) {// 递归结束条件,递归出口
return 1;
}
return n * jc(n - 1);
//第一次:5 * jc(4) 5*4*3*2*1
//第二次:4 * jc(3) 4*3*2*1
//第三次:3 * jc(2) 3*2*1
//第四次:2 * jc(1) 2*1
//jc(1) 满足递归出口 返回1
}
console.log(jc(5));//120
// Maximum call stack size exceeded : 栈溢出错误,内存溢出错误,