Cómo implementar recursión en C++?
¡Hola a todos! Soy nuevo en C++ y estoy tratando de entender la recursión. Escribí una función simple para calcular el factorial, pero no funciona correctamente. Aquí está el código:
```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 << "Factorial " << num << " = " << factorial(num) << endl;
return 0;
}
```
Espero obtener 120 para el número 5, pero a veces el programa se cierra o devuelve valores extraños. Intenté agregar una verificación para números negativos, pero no ayudó. También leí sobre desbordamiento de pila, pero no estoy seguro de cómo evitarlo. Tal vez el problema es que no estoy usando el caso base correctamente. ¿O necesito hacer algo con el tipo de valor de retorno? Quiero entender cómo organizar correctamente la recursión para que funcione de manera estable para números grandes (por ejemplo, para 20). Agradeceré una explicación de los principios básicos y posibles