递归求数组中最大的数

public class Test {
    public static void main(String[] args) {
        int arr[] = {1,5,9,7,5,3,2,6,4,8};
        System.out.println(getMax(arr));
    }
    public static int getMax(int []arr){
        return process(arr,0,arr.length - 1);
    }

    /*
    * 递归求数组arr[]上的最大值
    * */
    public static int process(int []arr,int L,int R){
        if(L == R)return arr[L];//数组只有一个值
        /*
        * 中点:
        * mid = (L+R)/2
        * 为了防止数组长度过大,导致 L+R 溢出
        * 所以 mid = L + (R - L)/2
        *           == L + ((R - L) >> 1)//往右移一位
        * */
        int mid =L + ((R - L) >> 1);//中点
        int leftMax = process(arr,L,mid);
        int rightMax = process(arr,mid + 1,R);
        return Math.max(leftMax,rightMax);

    }
}

代码来自视频学习:https://www.bilibili.com/video/BV13g41157hK?p=3

原文地址:https://www.cnblogs.com/13490-/p/15516104.html