Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ejemplo con recursividad en C++ que no entiendo.

Estas en el tema de Ejemplo con recursividad en C++ que no entiendo. en el foro de C/C++ en Foros del Web. 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, ...
  #1 (permalink)  
Antiguo 08/12/2008, 01:53
 
Fecha de Ingreso: diciembre-2008
Mensajes: 1
Antigüedad: 15 años, 4 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?
  #2 (permalink)  
Antiguo 08/12/2008, 10:46
Avatar de StevKenshinX  
Fecha de Ingreso: noviembre-2008
Ubicación: Lima
Mensajes: 28
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: Ejemplo con recursividad en C++ que no entiendo.

Osea Tu ejemplo lo ke kiere decir es lo sgt:

int f(int n) '' int n '' --> es el tipo de variable esto sera reemplazado por el valor del parametro que le das a la funcion f( " 5 ") el parametro en este caso seria 5 ,mas bien dicho int n = 5
entonces si te das cuenta mas adelante le va asignar a answer el valor " f(n-1) " por lo tanto este funcion se convertiria en " f(4) " debido a que " n= 5 ", y si restas " n-1=4 " ahora la recursividad viene aki debido a ke " f(4) " no puede kedar hazi nomas regresa a la funcion " int f(int n) " pero con el parametro 4 que ahora seria "int n=4" pero recuerda que " f(4) " se encuentra dentro de " f(5) " y despues de nuevo answer pedira f(n-1) osea f(3) de ahi pedira f(2) y de ahi f(1) pero recuerda ke hay una condicion para ke entre ke es n==1 cuando esto sucede simplemente retorna el valor 1 , y bueno en la recursividad siempre manda datos de adentro hazia afuera osea al ultima valor f(n) que entro.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:34.