Avatar ·

Как реализовать рекурсию в C++?

Привет всем! Я новичок в C++ и пытаюсь разобраться с рекурсией. Написал простую функцию для вычисления факториала, но она работает неправильно. Вот код: ```cpp #include using namespace std; int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); } } int main() { int num = 5; cout << "Факториал " << num << " = " << factorial(num) << endl; return 0; } ``` Я ожидаю получить 120 для числа 5, но иногда программа вылетает или возвращает странные значения. Пробовал добавить проверку на отрицательные числа, но это не помогло. Также читал про переполнение стека, но не уверен, как его избежать. Может быть, проблема в том, что я не использую базовый случай правильно? Или нужно что-то сделать с типом возвращаемого значения? Хочу понять, как правильно организовать рекурсию, чтобы она работала стабильно для больших чисел (например, для 20). Буду благодарен за объяснение базовых принципов и возможные улучшения кода.