- 请写一个 min 函数,要求 min(numbers) 能返回数组 numbers 中的最小数字。 ```javascript let minOf2 = numbers => numbers[0] < numbers[1] ? numbers[0] : numbers[1]
// 析构赋值 let minOf2 = ([a,b]) => a < b ? a : b
// 调用 minOf2([3,2]) minOf2.call(null, [3,2])
/ 现成API / Math.min(3,2) Math.min.call(null, 3, 2) Math.min.apply(null, [3,2])
/ 任意长度数组 / let min = numbers => { if (numbers.length > 2) { return min([numbers[0], min(numbers.slice(1))]) } else { return Math.min.apply(null, numbers) } }
min([2,1,3]) min.call(null, [2,1,3])
2. 请写出一个 sort 函数,要求 sort(numbers) 能返回一个把 numbers 从小到大排列的数组(你可以添加多余的帮助函数)
```javascript
let min = numbers => {
if (numbers.length > 2) {
return min([numbers[0], min(numbers.slice(1))])
} else {
return Math.min.apply(null, numbers)
}
}
let sort = numbers => {
if(numbers.length > 2) {
let minimum = min(numbers)
numbers.splice(numbers.indexOf(minimum),1)
return [minimum].concat(sort(numbers))
}else {
return numbers[0] < numbers[1] ? numbers : numbers.reverse()
}
}
sort.call(null, [0,2,5,89,12,46,27,3,15])
递归不可理解,必须用代入法验证