原理:递归,传入数组,头,尾,如果头尾差=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);
