Since you don't seem to care about standard and stuffs, here is an implementation of the recursive main function for printing factorial, that compiles on gcc (I only test on Windows). Since it doesn't follow standard, there is no guarantee that it will compiles on other compiler/platform.
Writing such code for fun is OK, but never let the bad behavior follows into serious coding project or workplace.
/* Print factorial */
#include <stdio.h>
#include <stdlib.h>
char buf[16];
int main(int argc, char **argv)
{
int n, rv;
if (argc < 2) {
printf("Usage: a.out <value>\n");
exit(-1);
}
n = atoi(argv[1]);
if (!n) {
rv = 1;
} else {
if (n == 1) {
rv = 1;
} else {
char *pt = buf;
char **pt2 = &pt - 1;
sprintf(buf, "%d", n - 1);
rv = main(2, pt2) * n;
}
}
printf("%d\n", rv);
return rv;
}