全面掌握递归
定义:
狭义上的递归就是函数自己调用自己。广义上的递归可以吧一个问题分为若干个小问题,逐个的解决小问题。
条件:递归方程和递归结束条件
一. 求n的阶乘
1 2 3 4 5 6 | functin factorial(n){ //终止条件 if (n===1) return 1 //递归方程 return n * factorial(n-1) } |
二. 经典案例——斐波那契数列
1 2 3 4 5 | function fibonacci(n){ if (n<=1) return n //每一项等于前两项的和 return fibonacci(n-1) + fibonacci(n-2) } |
三. 用递归求数组最大值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | //用递归求数组最大值 const arr = [8,5,33,77,11,35,73,146,4,2] function findMax(arr){ //终止条件 if (arr.length === 1) return arr[0] //将数组从中间分开 const half = Math.floor(arr.length/2) //分开对比 const left = arr.slice(0,half) const leftMax = findMax(left) //右边 const right = arr.slice(half,arr.length-1) const rightMax = findMax(right) if (leftMax > rightMax){ return leftMax } else { return rightMax } } |
四. 开发中的递归,利用数组获取子菜单的数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | let nameItem = [] function getName(values) { values.forEach((item)=> { if (item.children) { getName(item.children) } else { nameItem.push(item.name) }) return nameItem } const items = getName(data) console.log(items) [ '青苹果' , '红苹果' , '北方米饭' , '南方米饭' , '联想电脑' , '苹果电脑' , '锄头' , '锤子' , '洗发水' , '沐浴露' ] |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)