求任意数组的最小值

163 阅读1分钟

找出最小的那个

代码:

let min = (numbers) =>{
   return min(
     [numbers[0], min(numbers.slice(1))]
   )
}

这个代码会死循环不停的调用自己,需要添加一个中止条件

修改代码:

let min = (numbers) =>{
if(numbers.length > 2){
   return min(
     [numbers[0], min(numbers.slice(1))]
   )
  }else{
   return Math.min.apply(null, numbers)
 }
}

递归:先递进再回归

  min([2,4,3,1])
= min([2,min([4,3,1])])
= min([2,min([4,min([3,1])])])
= min([2,min([4,Math.min.apply(null,[3,1])])])
= min([2,min(4,1)])
= min([2,1])
= 1