¿Hay algún límite fijo en la profundidad de recursión en C?

El programa en discusión intenta calcularsum-of-first-n-natural-numbers utilizandorecursion. Sé que esto se puede hacer usando una fórmula simplen*(n+1)/2 Pero la idea aquí es usarrecursion.

El programa es el siguiente:

<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>

El programa funcionó bien paran = 100,000 pero cuando el valor den fue aumentado a1,000,000 resultó en unSegmentation fault (core dumped)

Lo siguiente fue tomado de lagdb mensaje.

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

Mis preguntas):

¿Hay algún límite fijo enrecursion depth enC? o hace elrecursion depth ¿Depende de la memoria de pila disponible?

¿Cuáles son las posibles razones por las que un programa recibiría una señal reSIGSEGV?

Respuestas a la pregunta(4)

Su respuesta a la pregunta