Факториальная рекурсия в C (Ошибка сегментации) - PullRequest
0 голосов
/ 29 декабря 2018

Привет всем Я начинающий программист, и у меня проблема с моим рекурсивным кодом для вычисления факториала числа.

Я получаю ошибку сегментации, и я не знаю, почему это так.

Любая помощь будет очень признательна :)

(в моем коде я пытаюсь вычислить факториал 4, например)

#include <stdio.h>

int factorial(int i) {
    int result = i * factorial(i - 1);
    return result;
}

int main()
{   
    int result = factorial(4);
    printf("result is %d", result);
}   

1 Ответ

0 голосов
/ 29 декабря 2018

Проблема в том, что вам не хватает базового условия.Таким образом, ваша функция работает вечно, пока она не использует всю память, доступную вашей программе, и, наконец, перестает выдавать ошибку ошибки сегментации.

При написании рекурсивных функций вы всегда должны предоставить базовое условие, которое остановит рекурсию.В вашем случае это будет

if(i == 0)
    return 1;

Здесь вы в основном говорите, что остановите рекурсию, когда мне станет 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...