Recursão em C, entenda exemplo de recursão

Estou tendo problemas para entender este exemplo. Eu não consigo descobrir o que realmente acontece depois de um certo ponto.

Aqui está o código, o resultado é suposto ser 4.

Eu posso ver que ela se chama várias vezes, mas como ela realmente chega ao resultado de 4 me escapa completamente. Qualquer ajuda seria muito 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: Muito obrigado, isso esclarece!

questionAnswers(6)

yourAnswerToTheQuestion