Q:

What happens after head becomes 0 in recurrsive call?

void fun1(struct Node* head)
{
 if(head == NULL)
    return;

 fun1(head->next);
  printf("%d  ", head->data);
}

after head->next becomes 0, how it is printed backward, please explain the flow ?

A:

You have to think of the calls in terms of how they operate, with a call stack.
The function hits the fun1 call before it prints anything, so it will go all the way to the base case before printing. Then it prints as it works its way out of each call; printing the list backwards.

