Definition of static variables: "Static variables have a property of preserving their value even after they are out of their scope. Hence, static variables preserve their previous value in their previous scope and are not initialized again in the new scope."
Reference: Static variables in C
Now that $a$ is a static variable, execution goes as follows:
$3$ is printed and then $a$ is decremented to $2$ (post-decrement operation)
In the first recursive call, $2$ is printed and $a$ is decremented to 1
In the second recursive call, $1$ is printed and $a$ is decremented to $0$.
Now, the $if$ block won't execute as $a=0$(not true value)
So, the Output printed would look like: $321$
Option B is correct.
-----------------------------------------------------------------------------------------------------------------------------------
The program output is shown below by executing it on GNU GCC version 5.4.0: