Что не так с моей рекурсивной функцией C? - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть небольшая C программа.

#include <stdlib.h>
#include <stdio.h>

void counter(int n);

int main(int argc, char *argv[])
{
    int n = atoi(argv[1]);
    counter(n);
    return 0;
}

void counter(int n)
{  
    printf("%d\n", n);

    if(n == 0) {
        return;
    }

    counter(n - 1);
}

Когда я ввожу 200000 в качестве аргумента командной строки, он работает хорошо. Но с 300000 он говорит: 17623 Ошибка сегментации (ядро сброшено).

При gdb ошибка: Программа получила сигнал SIGSEGV, Ошибка сегментации. 0x00007ffff7a6f198 в _IO_new_file_write (f = 0x7ffff7dd0760 <_IO_2_1_stdout_>, data = 0x555555756260, n = 6) в fileops. c: 1196 1196 fileops. c: такого файла или каталога нет.

1006 знать, что не так. Стоит ли выделять память или что-то в этом роде?

...