I'm new in C, and learning recursive algorithms.
I'll like to assign an ID to each time the execution goes into the IF statement, to retrieved it, and print it as a new execution ID, but I don't know how to achieve it.
int recursion = 0;
void merge_sort_recursion(int arr[], int left, int right)
{
  if (left < right)
  {
    int mid = left + (right - left) / 2;
    recursion++;
    printf("[%d]  NEW RECURSION ID\n", recursion);
    printf("     variables:\tleft: %d mid: %d right: %d\n", left, mid, right);
    printf("[%d] recursive LEFT  \t\n", recursion);
    merge_sort_recursion(arr, left, mid);
    printf("[%d] recursive RIGHT \t\n", recursion);
    merge_sort_recursion(arr, mid + 1, right);
    printf("[%d] recursive MERGE \t\n", recursion);
    merge_sorted_arrays(arr, left, mid, right);
  }
}
So far, all in print is this:
[1]  NEW RECURSION ID
[1] recursive LEFT  
[2]  NEW RECURSION ID
[2] recursive LEFT  
[2] recursive RIGHT 
[2] recursive MERGE 
[2] recursive RIGHT 
[3]  NEW RECURSION ID
[3] recursive LEFT  
[3] recursive RIGHT 
[3] recursive MERGE 
[3] recursive MERGE 
But, I'm looking for something like this:
[1]  NEW RECURSION ID
[1] recursive LEFT  
[2]  NEW RECURSION ID
[2] recursive LEFT  
[2] recursive RIGHT 
[2] recursive MERGE 
[1] recursive RIGHT 
[3]  NEW RECURSION ID
[3] recursive LEFT  
[3] recursive RIGHT 
[3] recursive MERGE 
[1] recursive MERGE 
Thank you,
 
    