我不明白 merge_sort 排序算法和函数调用的递归实现

i didn't understand the recursive implementation of merge_sort sorting algorithm and the function calls

这是一个用C语言实现的函数mergeSort,当我们在第5行和第6行递归调用函数merge_sort时,它们并行工作或者第一个完成工作,其余代码行已暂停? , 那第 8 行呢,它也和它们并行工作?

1- void mergeSort(int arr[], int l, int r)
2- {
    3-if (l < r) {
       4 - int m = l + (r - l) / 2;
       5 - // Sort first and second halves
       6 - mergeSort(arr, l, m);
       7 - mergeSort(arr, m + 1, r);
       8 - merge(arr, l, m, r);
    }
}

所有程序逐行执行。除非您执行多线程,否则您的代码显然没有执行多线程,否则不会有任何并行机制。
第5行将在第4行之后执行
第6行将在第5行之后执行
第7行将在第6行之后执行
第 8 行将在第 7 行之后执行

如果你不相信代码实际上是一行一行执行的。这里我举个例子。

// a recursive function, like mergeSort
void print(int i, int j) {
    printf("%d %d\n", i, j);
    if (j > 0) print(i, j - 1);
}

int main() {
    print(1, 2);
    print(2, 2);
    return 0;
}

输出:

1 2
1 1
1 0
2 2
2 1
2 0

现在很清楚 print(1, 2) 在 print(2, 2)

之前得到 完全 执行