I am writing a program to calculate factorial using recursion of main
() function.
/* Print factorial */
#include <stdio.h>
#include <stdlib.h>
static char **p;
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 = 0;
} else {
if (n == 1) {
rv = 1;
} else {
n = n - 1;
**p = n;
main(2, p);
}
}
printf("%d\n", rv);
return 0;
}
The program compiles using gcc
but on execution, I am getting a Segmentation Fault at **p = n
. Can somebody help me to modify the above program to get the correct result. Also, what is the logic to capture correct rv
value between successive recursive calls in main
()?