Existe algum limite de hard-wired na profundidade de recursão em C

O programa em discussão tenta computarsum-of-first-n-natural-numbers usandorecursion. Eu sei que isso pode ser feito usando uma fórmula simplesn*(n+1)/2 mas a ideia aqui é usarrecursion.

O programa é o seguinte:

<code>#include <stdio.h>

unsigned long int add(unsigned long int n)
{
    return (n == 0) ? 0 : n + add(n-1); 
}

int main()
{
    printf("result : %lu \n", add(1000000));
    return 0;
}
</code>

O programa funcionou bem paran = 100,000 mas quando o valor den foi aumentado para1,000,000 isso resultou em umSegmentation fault (core dumped)

O seguinte foi retirado dogdb mensagem.

<code>Program received signal SIGSEGV, Segmentation fault.
0x00000000004004cc in add (n=Cannot access memory at address 0x7fffff7feff8
) at k.c:4
</code>

Minhas perguntas):

Existe algum limite de hard-wiredrecursion depth emC? ou orecursion depth depende da memória de pilha disponível?

Quais são as possíveis razões pelas quais um programa receberia um sinal reSIGSEGV?

questionAnswers(4)

yourAnswerToTheQuestion