工作中闭包使用很多,递归很少用到,但是也是都要掌握的
递归:函数自己调用自己,跟循环类似,他为了避免无限的递归,需要设置一个递归终止点
function sum(n){
//递归终止点 如果函数体内出现return,无论在return在哪里,return下面的代码都不会在执行
//函数里面return直接执行退出栈操作,所以下面的代码不会执行
if(n===1){
return 1;
}
//递归
return n+sum(n-1);
}
console.log(sum(10))
调用栈:
10+sum(9)
9+sum(8)
8+sum(7)
7+sum(6)
······
2+sum(1)
所有的递归都可以转换成循环的形式,但是有些时候循环不是那么直观
菲波那切数列使用递归实现
function fei(n){
if(n<=1){
return 1;
}
return fei(n-1)+fei(n-2);
}
console.log(fei(5))
//8