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