int find_max(int arr[], int n)

{

    int a, b;

    // 수열의 길이가 1 이면 수열의 값을 return.

    if (n == 1) return *arr;

   

    if (n % 2 == 0) {

        // n 이 짝수일때. 길이가 n/2 인 두 개의 부분수열로 나눔.

        a = find_max(arr, n / 2);

        b = find_max(arr + n / 2, n / 2);

    }

    else {

        // n 이 홀수일때. 길이가 (n+1)/2 인 부분수열과

        // (n-1)/2 인 부분수열로 나눔.

        a = find_max(arr, (n + 1) / 2);

        b = find_max(arr + (n + 1) / 2, (n - 1) / 2);

    }

 

    // 두 부분수열중 큰 값을 return 한다.

    return (a >= b) ? a : b;

}


재귀로 최댓값찾는 함수인데용 수열을 두개로 나눈다 라고되있는데..


a = find_max(arr, (n + 1) / 2);  

               ↑요부분이 어떻게 동작되는지 알려주실수 있을까요.. 부탁드려요잉..