Dos llamadas recursivas en una función de combinación de confusión confusión

He estado fuera de contacto con los algoritmos por un tiempo y he empezado a revisar mis conceptos en estos días. Para mi sorpresa, lo último que recuerdo de mi habilidad para las recursiones fue que fui bueno en eso, pero ya no. Entonces, tengo una pregunta básica para ustedes que me está confundiendo. Por favor, vea el siguiente código primero ..

private void mergesort(int low, int high) {
    if (low < high) {
        int middle = (low + high)/2 ;
        System.out .println ("Before the 1st Call");
        mergesort(low, middle);
        System.out .println ("After the 1st Call");
        mergesort(middle+1, high);
        System.out .println ("After the 2nd Call");
        merge(low, middle, high);
    }
}

La llamada de función

mergesort(0,7);

Y la salida es

Antes de la primera llamada

Antes de la primera llamada

Antes de la primera llamada

Después de la primera llamada

Después de la segunda llamada

Después de la primera llamada

Antes de la primera llamada

Después de la primera llamada

Después de la segunda llamada

Después de la segunda llamada

Después de la primera llamada

Antes de la primera llamada

Antes de la primera llamada

Después de la primera llamada

Después de la segunda llamada

Después de la primera llamada

Antes de la primera llamada

Después de la primera llamada

Después de la segunda llamada

Después de la segunda llamada

Después de la segunda llamada

Lo que me confunde en el código anterior y el resultado es la segunda llamada recursiva. Comprendo el flujo hasta la cuarta línea de salida (es decir, después de la primera llamada). Pero no entiendo por qué sale (después de la segunda llamada) después de (después de la primera llamada). De acuerdo con lo que entiendo del código Después de la salida (Después de la primera llamada), se debe llamar a la función mergesort con el parámetro (medio + 1, alto) y debe salir (antes de la primera llamada) y entrar en la llamada recursiva con mergesort (bajo, medio). Soy comfartable con las funciones de una llamada recursiva y entiendo y estoy sincronizado con el ejemplo de foreg fibonacci.

Respuestas a la pregunta(9)

Su respuesta a la pregunta