Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/12/2008, 01:53
hanfix
 
Fecha de Ingreso: diciembre-2008
Mensajes: 1
Antigüedad: 15 años, 5 meses
Puntos: 0
Ejemplo con recursividad en C++ que no entiendo.

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?