Рекурсия с использованием функции main () [закрыто]

Я пишу программу для расчета факториала с использованием рекурсииmain() функция.

/* Print factorial */
#include 
#include 

static char **p;

int main(int argc, char **argv)
{
        int n, rv;
        if (argc < 2) {
                printf("Usage: a.out \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;
}

Программа компилируется с использованиемgcc но при исполнении я получаю ошибку сегментации в**p = n, Может кто-нибудь помочь мне изменить вышеуказанную программу, чтобы получить правильный результат. Кроме того, какова логика, чтобы захватить правильноrv значение между последовательными рекурсивными вызовами вmain()?

Ответы на вопрос(2)

Ваш ответ на вопрос