递归实现数组扁平化

本文介绍了递归的基本概念,包括递归的三个特点:函数内部调用自身、明确的递归结束条件和不确定的循环次数。通过实例展示了递归在求解累加、阶乘问题上的应用,并提供了数组扁平化的递归解决方案。同时,文章指出递归可能导致的死循环问题和较高的时间复杂度,因此在实际编程中需谨慎使用。
摘要由CSDN通过智能技术生成

 递归:简单来说就是函数内部调用函数

特点:

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))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值