Eu não sou capaz de entender a recursão de funções. Como funciona? como os valores são armazenados e tudo?

Eu não sou capaz de entender a recursão de funções. Como funciona? como os valores são armazenados e tudo?

int tree_size(struct node* node) { 
  if (node==NULL) {
    return(0); 
  } else { 
    return(tree_size(node->left) + tree_size(node->right) + 1); 
  } 
}

questionAnswers(4)

yourAnswerToTheQuestion