当前位置: 首页 > news >正文

云南建设学校网站网站分享代码怎么加

云南建设学校网站,网站分享代码怎么加,山西响应式网站哪家好,北京网站优化推广方案概览 在 JavaScript 中,递归是一种编程技术,指的是函数直接或间接调用自身的过程。 递归通常用于解决可以分解为相同子问题的问题。通过不断地将问题分解成更小的、相似的子问题,直到达到某种基本情况(不再需要进一步递归的简单情…

概览

在 JavaScript 中,递归是一种编程技术,指的是函数直接或间接调用自身的过程。
递归通常用于解决可以分解为相同子问题的问题。通过不断地将问题分解成更小的、相似的子问题,直到达到某种基本情况(不再需要进一步递归的简单情况)。

递归一般要满足以下两个关键条件:

  1. 存在基本情况(终止条件):必须有某种简单的情况,在这种情况下递归不再继续进行,避免无限递归导致程序崩溃。
  2. 能够不断将问题规模缩小:通过递归调用自身,要能逐步将问题转化为更小的、相似的子问题,直到最终达到基本情况。

一. 常见应用

  1. 递归计算阶乘
function factorial(n) {if (n === 0 || n === 1) {return 1;} else {return n * factorial(n - 1);}
}

当递归终止后,从内到外依次执行。

  1. 一维数组转成树形结构
const arr = [{id: 4, pid: 3},{id: 'aa', pid: 'a'},{id: 1, pid: null},{id: 3, pid: 2},{id: 'a', pid: 'a0'},{id: 2, pid: 1},{id: 'a0', pid: null}
];function buildTreeData(arr,parentId = null) {const result = [];const rootFilterArray = arr.filter(item => item.pid === parentId);debugger;if(rootFilterArray.length > 0 ) {rootFilterArray.forEach(subitem => {debugger;const children = buildTreeData(arr,subitem.id);if(children.length > 0 ) {subitem.children = children}result.push(subitem)});}return result
}const resData = buildTreeData(arr);
console.log(resData,'resData')
  1. 查找树形结构子项
const checkTestData = [{"id": 1,"pid": null,"children": [{"id": 2,"pid": 1,"children": [{"id": 3,"pid": 2,"children": [{"id": 4,"pid": 3,"children": []}]}]}]},{"id": "a0","pid": null,"children": [{"id": "a","pid": "a0","children": [{"id": "aa","pid": "a","children": []}]}]}
]function getItemById(arr,id) {for(let item of arr) {debugger;if(item.id === id) {return item} else if(item.children) {const data = getItemById(item.children,id);if(data) {return data}}}
}const resDataItem = getItemById(checkTestData,3);
console.log(resDataItem,'resDataItem')

二. 总结

关键点梳理:

  1. 递归终止条件确定: 即没有调用自身的函数。
  2. 递归终止后结果的获取:有的时候直接返回最终的递归结果,有的时候拿到每次递归的结果之后由内至外依次进行逻辑处理。
http://www.yayakq.cn/news/513610/

相关文章:

  • 苏州网站的优化怎么用APdiv做网站导航栏
  • 钓鱼网站在线生成如何注册公司企业邮箱
  • 微信公众号怎么做微网站吗成功的网站必须具备的要素
  • com域名注册多少钱蚌埠seo推广
  • 龙岩做网站有那几家商城网站建设报
  • 综合性型门户网站有哪些网站开发软件教程
  • 适合在线做笔试的网站电子商务网站软件建设
  • 网站开发设计步骤潍坊 营销型网站建设
  • 漳州网站制作礼品公司网站源码
  • 微网站微名片WordPress网站根目录有哪些
  • 建设部网站中煤三建制作视频用什么app
  • 在线做漫画的网站想自己做微信网站的工作
  • 现在做网络推广网站建设怎么样html网站服务器搭建
  • 网站如何做电脑销售nas云存储做视频网站
  • 专业的高密网站建设做dj选歌是哪个网站
  • 购物网站网页设计公司企业网站设计尺寸
  • 学做预算有网站吗wordpress 324错误
  • 建设一个门户网站需要多久株洲网站建设优度
  • 网站运营核心wordpress减肥网站采集规则
  • 手机版商城网站都有哪 些功能全网营销培训公司
  • 网站标题栏做多大如何让域名指向网站
  • 外贸免费开发网站建设青岛微网站建设
  • 网站域名费一年多少钱海报制作哪个软件好
  • 长沙门户网站有哪些wordpress图片文件目录下
  • 如何确定网站建设 栏目楼市最新消息今天
  • 石家庄网站快速备案wordpress 图片网站
  • 静安区品牌网站建设网站建设雨点
  • dw中做网站的步骤广告图片在线制作
  • 秦时明月的个人网站怎么做外贸网络营销的优势
  • 网站点播视频如何做西点培训前十名学校