1. 请写一个 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])

    1. 2. 请写出一个 sort 函数,要求 sort(numbers) 能返回一个把 numbers 从小到大排列的数组(你可以添加多余的帮助函数)
    2. ```javascript
    3. let min = numbers => {
    4. if (numbers.length > 2) {
    5. return min([numbers[0], min(numbers.slice(1))])
    6. } else {
    7. return Math.min.apply(null, numbers)
    8. }
    9. }
    10. let sort = numbers => {
    11. if(numbers.length > 2) {
    12. let minimum = min(numbers)
    13. numbers.splice(numbers.indexOf(minimum),1)
    14. return [minimum].concat(sort(numbers))
    15. }else {
    16. return numbers[0] < numbers[1] ? numbers : numbers.reverse()
    17. }
    18. }
    19. sort.call(null, [0,2,5,89,12,46,27,3,15])

    递归不可理解,必须用代入法验证