Ver Mensaje Individual
  #6 (permalink)  
Antiguo 14/06/2007, 22:45
Avatar de Instru
Instru
 
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años, 2 meses
Puntos: 52
Re: recursividad?

La recursividad no es la mejor forma de resolver problemas en un lenguaje como C o C++. Aun asi, siempre es bueno saber que existe esa propiedad.

En realidad es muy sencillo.

tienes el factorial de 4( 4! ).

entonces, como te dicen.

4*3! que es -> return numero*factorial(numero-1)

Como veras, se vuelve a llamar a la funcion factorial, pero esta vez tiene 3 en ez de 4, por lo que queda.

3*2! return numero*factorial(numero-1)
Lo mismo.
2*1!

cuando numero es 1, ya no se llama a la funcion factorial, en su lugar solo devuelve uno.

if(numero<=1)
return 1;

Entonces ya tenemos el primer valor y se sale de la ultima funcion factorial y el uno devuelto se multiplica por el 2 y luego el valor devuelto se multimplicapor 3 y en la primera funcion llamada, por 4. Y finalmente sale del "ciclo".

Imaginatelo como un ciclo:

Cita:
int numero, factorial=1;
for(numero=4; numero >=1; numero--)
{
factorial=factorial*numero;
}
Creo que este codigo es mucho mas legible que al usar recursividad, y aparte digamos que ahorras algo de pila(stack). Jjejeje. Imaginate el factorial de 100?

Saludos