Jung Marco Ответов: 1

Как я могу исправить эту простую ошибку кода в linux?


Сейчас я практикую использование Vim в Linux.
Я сделал такой простой код

когда я ставлю -1 и 0, это работает. они возвращают 0 и 1.
Однако, когда я поставил положительные целочисленные значения на n, это не сработало.
Я попытался выяснить причину, чтобы использовать gdb
но он просто сказал Вот так :

Программа получила сигнал SIGSEGV, ошибка сегментации.
0x0000000000400620 в факториале ()

Что не так с моим кодом?? Я даже не могу понять, в чем тут дело.
Почему GDB не заметила, какая строка получила ошибку?

Что я уже пробовал:

#include <stdio.h>
        
        int factorial(int n){
           if (n<0) { return 0; }
           else if (n==0) { return 1; }
           else { return n * factorial(n); }
        }
        
        int main(void){
           int n = 0;
        
           printf("Put n value : ");
           scanf("%d", &n)
        
           printf("%d! = %d\n", n, factorial(n));
        
           return 0;
    }

1 Ответов

Рейтинг:
11

Patrice T

пробовать:

else { return n * factorial(n-1); }


CPallini

5.

Patrice T

Спасибо, это была простая проблема