- 递归就是函数内部调用自己的过程,它本质就是一个循环
还是举个阶乘的例子:
factorial(5);
function factorial(n) {
if (n == 1) {
return 1;
}
return n * factorial(n-1);
}
<!--执行过程看这里:
<!-- 5 * factorial(4) -->
<!-- 4 * factorial(3) -->
<!-- 3 * factorial(2) -->
<!-- 2 * factorial(1) -->
<!-- 最后当 n = 1 的时候,得到 factorial(1) = 1
factorial(2) = 2 * factorial(1) = 2
factorial(3) = 3 * factorial(2) = 6
factorial(4) = 4 * factorial(3) = 24
5 * factorial(4) = 120
-->
<!--看完这里肯定就能明白递归到底是怎么执行的了-->
<!--递归就是先执行完的最后返回的过程-->
再来看一个简单的例子:
fn(0);
function fn(nub){
if(nub < 5){
fn(nub+1);
}
console.log(nub);
}
<!--结果为:5 4 3 2 1 0 ;
<!--也是先执行完的最后返回的过程-->