但是一定要注意控制好合适的跳出,不然就会死循环,如图:
所以我们平时一定要注意,递归函数里调用函数本身的时候一定要要合理的控制循环跳出的语句;比如我们来看一题很经典的面试题,请用递归方法算出1-20之间每个数的和
function calc(num){
//这个if是退出递归的条件
if(num===1) { //如果没有这个if条件
return num
}
return num + calc(num-1) //
}
console.log(calc(3)) //这里为了方便我们理解我们可以先用num===3替代进去,具体的方式以及步骤分解可以看图:
如果有大佬有更好的理解方法,可以留言或者私信哦,互相学习,互相进步~~~
1.递归实现
用forEach和reduce做一个简单的封装joinArr()函数显示数组的合并
2.补充
完善:封装成joinArr()函数
其实难点就在于对递归函数的理解。所谓递归函数,就是函数在执行时调用自己。程序在调用一个函数时,首先执行这个函数的程序,执行完毕后返回到原调用前的上一级程序继续运行这一级程序。调用递归函数也是如此,在执行完递归函数,得到3之后,它要退出递归函数回到调用它的原来的主程序继续去执行原来的主程序。由于调用递归函数时程序是逐级进行的,所以返回时也是逆向逐级执行程序并返回的,即在得到3后,返回上一级执行这一级的程序就得到4(即再次执行document.writeln(num1)),再返回上一级执行这一级的程序得到5(即再次执行document.writeln(num1))。