原理:递归,传入数组,头,尾,如果头尾差=1则两个比大小,头尾差=0说明是一个数,取值;else 取一个中间值,递归执行传入数组、头、中间值,然后递归数组、中间值、尾;最后比较两次结果的最大值,返回;

    1. function fn (arr, start, end) {
    2. if (end - start === 1) {
    3. return {max: Math.max(arr[start], arr[end]), min: Math.min(arr[start], arr[end])};
    4. } else if (end - start === 0) {
    5. return {max: arr[start], min: arr[end]}
    6. } else {
    7. let m = parseInt(start + (end - start) / 2);
    8. let res1 = fn(arr, start, m);
    9. let res2 = fn(arr, m, end);
    10. let res = {};
    11. res.max = Math.max(res1.max, res2.max);
    12. res.min = Math.min(res1.min, res2.min);
    13. return res;
    14. }
    15. }
    16. let res = fn(arr, start, end);
    17. console.log(res);