Estoy empezando con C++. Había un ejercicio con recursividad. Al hacer un pequeño experimento para ver qué salía, no entiendo por qué da ese resultado, y ya llevo un tiempo dándole vueltas. Ya he buscado por este foro, y hay algo de recursividad, pero no me lo aclara. Este es el código:
#include <iostream>
using namespace std;
int f(int n);
int main ()
{
cout << "La funcion es: " << f(5);
cout << "\n";
return 0;
}
int f(int n)
{
int answer;
if (n==1) return (1);
cout << "El valor de n es: " << n << "\n";
answer = f(n-1);
cout << "Ahora el valor de n es: " << n << "\n";
return (answer);
}
El resultado de este código es:
El valor de n es: 5
El valor de n es: 4
El valor de n es: 3
El valor de n es: 2
Ahora el valor de n es: 2
Ahora el valor de n es: 3
Ahora el valor de n es: 4
Ahora el valor de n es: 5
La funcion es: 1
No entiendo por qué ejecuta (n-1) veces el cout << "Ahora el valor de n es:" << n << "\n"... y menos todavía por qué me lo escribe al revés...entiendo que en recursividad se almacenan variables locales en una pila (stack), y que después se van utilizando conforme se necesitan, pero no acabo de tener las ideas muy claras.
¿Alguien que me pueda ayudar?