递归:简单来说就是函数内部调用函数
特点:
1:在函数里面调用自身。
2:必须有一个明确的递归结束条件,这个称之为递归出口。
3:不确定循环执行的次数。
缺点:使用递归函数一定要注意,处理不当就会进入死循环。在实际使用中,递归函数由于消耗时间比较长(相比for循环和while循环),所以很少使用。
递归小例题:
1、求n个数的累加
function getSum (n) {
if (n == 1) { return 1;}
return n + getSum(n - 1);
}
console.log(getSum(100));
2、求n的阶乘
function f(num){
if(num<1){
return 1;
}
return f(num-1)*num;
}
数组扁平化=>数组捶平
var arr = [[5,1,3],5,6,[[9,5]],[]] //多维数组
//将需要转化的数组,以及最后需要返回的数组进行传参
function delayering(array,result = []){
//循环数组中的每一项,如果这一项是数组,则再次调用这个函数,
//否则直接将这项push到结果中,并且return出来
for(var i of array){
if(Array.isArray(i)){
delayering(i,result)
}else{
result.push(i)
}
}
return result;
}
console.log(delayering(arr))