Here is a recursive C program
fact(int n) { int fact; if(n==1) return(1); else fact = n * fact(n-1); return(fact); }
Please note that there is no error handling added to this function (to check if n is negative or 0. Or if n is too large for the system to handle).