Javascript中递归的使用方法

 利用递归实现深拷贝 

利用递归将数组转成树结构 
  流程如下:

 1.首先传入两个参数,一个是数组,一个是要查询的pid
 2.进入函数,首先遍历数组,进行判断,看看这个要查询的pid
   和数组中的parentId一样不,如果一样,说明他有上级
 3.使用递归,将这个要查询的pid的id当做刚开始的要查询的pid
   查询,再进入递归,查询他们有没有下属,有的话加入到
   直到没有下属为止

 利用递归将数组转成树结构 

总体思路分为两步:

第一步,写出口条件:这里的重点是利用数组的长度作为递归出口。长度为1 的时候递归出去

第二步,写递归条件:首先,递归是自己调用自己,必须得出去,不然死循环。那么,怎么让数组的长度变短呢?需要给一个条件,比如刚开始数组长度是5,那么他应该是第二次比第一次短,是4,然后3、2、1。最后等于1的时候递归就可以出去了。可以使用slice()方法,他的作用是返回一个新数组,里面两个参数,第一个是必须得从哪里开始,第二个是可选哪里结束,这里只需要利用第一个,从1开始,这样每次返回的新数组都会少一个,直至剩下一个,递归结束。
 

利用递归解决汉罗塔问题  

如下图所示,从左到右有A、B、C三根柱子,其中A柱子上面有从小叠到大的n个圆盘,现要求将A柱子上的圆盘移到C柱子上去,期间只有一个原则:一次只能移到一个盘子且大盘子不能在小盘子上面,求移动的步骤和移动的次数

思路:

将A柱子上的n-1个盘子暂时移到B柱子上
A柱子只剩下最大的盘子,把它移到目标柱子C上
最后再将B柱子上的n-1个盘子移到目标柱子C上
人话:

        把A上n-1个盘子通过借助辅助塔(C塔)移到了B上

        把最大的一个盘子由A移到C上去

        把B上n-1个盘子通过借助辅助塔(A塔)移到了C上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值