原理:递归,传入数组,头,尾,如果头尾差=1则两个比大小,头尾差=0说明是一个数,取值;else 取一个中间值,递归执行传入数组、头、中间值,然后递归数组、中间值、尾;最后比较两次结果的最大值,返回;
function fn (arr, start, end) {
if (end - start === 1) {
return {max: Math.max(arr[start], arr[end]), min: Math.min(arr[start], arr[end])};
} else if (end - start === 0) {
return {max: arr[start], min: arr[end]}
} else {
let m = parseInt(start + (end - start) / 2);
let res1 = fn(arr, start, m);
let res2 = fn(arr, m, end);
let res = {};
res.max = Math.max(res1.max, res2.max);
res.min = Math.min(res1.min, res2.min);
return res;
}
}
let res = fn(arr, start, end);
console.log(res);