定义:
狭义上的递归就是函数自己调用自己。广义上的递归可以吧一个问题分为若干个小问题,逐个的解决小问题。
条件:递归方程和递归结束条件
一. 求n的阶乘
functin factorial(n){ //终止条件 if(n===1) return 1 //递归方程 return n * factorial(n-1) }
二. 经典案例——斐波那契数列
function fibonacci(n){ if(n<=1) return n //每一项等于前两项的和 return fibonacci(n-1) + fibonacci(n-2) }
三. 用递归求数组最大值
//用递归求数组最大值 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 } }
四. 开发中的递归,利用数组获取子菜单的数据
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) ['青苹果','红苹果', '北方米饭','南方米饭', '联想电脑','苹果电脑', '锄头','锤子', '洗发水','沐浴露' ]
标签:rightMax,arr,return,递归,掌握,item,全面,const From: https://www.cnblogs.com/heiheixiaohei/p/16789160.html