Método Recursivo En Programacion

Páginas: 9 (2138 palabras) Publicado: 12 de junio de 2012
Método Recursivo en Programacion

Sí, lo sé, reconozco que es algo confuso, sobre todo para aquellos que estéis empezando. Pero tranquilos, que trataré
de explicaros esto con detenimiento.
Primero explicaré los motivos por los que uso un tipo double como valor de retorno y un tipo byte para el argumento.
Veamos, uso el tipo double porque es el que admite valores más grandes, sí, más que eltipo Decimal, ya que se
almacena en memoria de un modo diferente. Por otro lado, uso el tipo byte para el argumento sencillamente porque no
tendría sentido usar un tipo que acepte números mayores, ya que pasando de 170 el valor del factorial no cabe ni si
quiera en el tipo double.
Una vez aclarado esto, veamos cómo funciona. Primero os dibujo la traza, tal y como funciona si se quiere calcularel
factorial de 3 (o sea, num vale 3):

Para asegurarme de que comprendes esto bien, observa el código y el gráfico según vas siguiendo la explicación.
Cuando en el programa hacemos una llamada al método (Fact(3) en el gráfico) este, evidentemente, comienza su
ejecución. Primero comprueba si el argumento que se le ha pasado es igual a cero (revisa el código). Como en este
caso el argumentovale 3, el método retornará lo que valga el producto de 3 por el factorial de 3 -1, o sea, 3 por el
factorial de 2. Claro, para poder retornar esto debe calcular previamente cuánto vale el factorial de 2, por lo se produce
la segunda llamada al método Fact.

En esta segunda llamada, sucede algo parecido: el argumento vale 2, y como no es igual a cero el método procede a
retornar 2 por elfactorial de 1 (2 - 1), pero, obviamente, vuelve a suceder igual. Para poder retornar esto ha de calcular
previamente cuánto vale el factorial de 1, por lo que se produce la tercera llamada al método Fact, volviendo a darse de
nuevo la misma situación: como 1 no es igual a cero, procede a retornar el producto de 1 por el factorial de cero, y de
nuevo tiene que calcular cuánto vale el factorial decero, por lo que se produce una nueva llamada al método Fact. Sin
embargo esta vez sí se cumple la condición, es decir, cero es igual a cero, por lo que esta vez el método Fact retorna 1
al método que lo llamó, que era el que tenía que calcular previamente cuánto valía el factorial de 0 y multiplicarlo por 1.
Así, la función que tenía que calcular 1*Fact(0) ya sabe que la última parte, es decir,Fact(0), vale 1, por lo que hace el
producto y retorna el resultado al método que lo llamó, que era el que tenía que calcular cuánto valía 2 * Fact(1). Como
este ya tiene el resultado de Fact(1) (que es, recuerda 1*1), ejecuta el producto, retornando 2 al método que lo llamó,
que era el que tenía que calcular cuánto valía 3*Fact(2). Como ahora este método ya sabe que Fact(2) vale 2, ejecuta elproducto y retorna el resultado, que es 6, finalizando la traza. Si te das cuenta, un método recursivo va llamándose a sí
mismo hasta que se cumple la condición que hace que termine de llamarse, y empieza a retornar valores en el orden
inverso a como se fueron haciendo las llamadas.
Bueno, creo que ya está todo dicho por hoy, así que llega el momento de los ejercicios. Sujétate fuerte a lasilla, porque
esta vez te voy a poner en unos cuantos aprietos.
EJERCICIO 3
Antes de nada, no te asustes que es muy fácil. Si no sabes qué es alguna cosa, en las pistas te doy las definiciones de
todo. En este ejercicio te voy a pedir que escribas seis métodos, los cuales te detallo a continuación:
El método rFact: debe ser recursivo y retornar el factorial de un número. Ahora bien, no ve valeque copies el que
página 1

El método rFact: debe ser recursivo y retornar el factorial de un número. Ahora bien, no ve vale que copies el que
está escrito en esta entrega. A ver si eres capaz de hacerlo con una sola línea de código en lugar de dos.
○ El método itFact: debe retornar también el factorial de un número, pero esta vez tiene que ser iterativo (o sea, no
recursivo).
○ El método...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Programacion de recursos
  • Programacion y Metodos
  • Metodos y programacion
  • Metodos de programacion
  • Recurso de método
  • Ensayo recursividad en programación
  • Programación En C
  • Metodologias de Programación: Recursividad

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS