Czym naprawdę jest rekursja i wyjaśnienie wyników tego programu? [Zamknięte]

Naprawdę nie mogę zrozumieć tego kodu. Kiedy funkcja wywołuje się sama, co naprawdę się dzieje? Jest to związane z koncepcją stosu, wiem, ale wciąż nie mogę rozwiązać tych pytań.

#include<stdio.h>

fun(int);

main()
{
  int x=3;
  fun(x);
}

fun(int a) 
{
  if(a<0)
   {
     fun(--a);    // what happens when function calls itself
     printf("%d",a);
     fun(--a);
   }
} 

Proszę wyjaśnić kolejność zdarzeń, które wystąpią w tym czasie.

questionAnswers(3)

yourAnswerToTheQuestion