Funciones recursivas en C e printf

Entonces, antes que nada soy un principiante total en C, lo estamos estudiando en la Universidad en el curso 'Programación Estructurada'.

Ahora, las últimas conferencias sobre 'Funciones recursivas' han sido un dolor para mí como principiante. ¿Podría alguno de ustedes ser tan amable de explicarme esto:

Entonces tengo este pequeño script, una función recursiva que toma un número decimal y lo convierte en binario:

#include <stdio.h>

void binary(int num)
{
    if (num == 0) return;

    binary(num / 2);
    printf("%d", num % 2);
}

int main()
{
    int n;
    scanf("%d", &n);
    binary(n);
    return 0;
}

Ahora me preguntaba, ¿cómo funciona esta función? Sé la lógica detrás de esto y qué se supone que debe hacer, pero no sé cómo lo hace. El printf en la parte inferior me está desanimando especialmente, por ejemplo, si la función printf está antes de la llamada recursiva, para la entrada decimal 10 imprime (0101) pero si está debajo imprime el número binario correcto (1010)?

Cualquier tipo de ayuda es muy apreciada, saludos cordiales.

Respuestas a la pregunta(2)

Su respuesta a la pregunta