Recursión en C, entender ejemplo de recursión

Estoy teniendo problemas para entender este ejemplo. No puedo entender qué sucede realmente después de cierto punto.

Aquí está el código, el resultado se supone que es 4.

Puedo ver que se llama a sí mismo varias veces, pero cómo llega al resultado de 4 elude por completo. Cualquier ayuda sería muy apreciada.

#include <stdio.h>

int recursion(int i) 
{ 
  return (i>1 ? i - recursion(i/2) : 3);
} 

int main() 
{ 
  int number = 9; 
  printf("The result is %d\n", recursion(number)); 
  return 0;
}

editar: Muchas gracias, eso lo aclara!

Respuestas a la pregunta(6)

Su respuesta a la pregunta