Есть ли какой-нибудь жесткий предел глубины рекурсии в С

Обсуждаемая программа пытается вычислитьsum-of-first-n-natural-numbers с помощьюrecursion, Я знаю, что это можно сделать с помощью простой формулыn*(n+1)/2 но идея здесь заключается в использованииrecursion.

Программа выглядит следующим образом:

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

Программа работала хорошо дляn = 100,000 но когда значениеn был увеличен до1,000,000 это привело кSegmentation fault (core dumped)

Следующее было взято изgdb сообщение.

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

Мои вопросы):

Is there any hard-wired limit on recursion depth in C? or does the recursion depth depends on the available stack memory?

What are the possible reasons why a program would receive a reSIGSEGV signal?

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

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