Está en la página 1de 16

Temas : Recursin

Mtodo recursivo Componentes de recursin Ejemplo

Administracin de Proyectos de desarrollo de Software Ciclo de vida de un proyecto IV. Desarrollo de aplicaciones con manejo de archivos deEnfoquede excepciones en JAVA texto y moderno

Fin de la presentacin

Contine en la siguiente actividad

Administracin de Proyectos de desarrollo de Software Ciclo de vida de un proyecto IV. Desarrollo de aplicaciones con manejo de archivos deEnfoquede excepciones en JAVA texto y moderno

IV. Desarrollo de aplicaciones con manejo de archivos de texto y de excepciones en JAVA

Mtodo Recursivo Se le llama recursivo a un mtodo que se llama el mismo para el desarrollo de algn clculo o el uso de alguna instruccin repetitiva. Es un concepto abstracto, ya que podramos pensar en utilizar un ciclo para desarrollar algo repetitivo, pero es importante que entiendas este concepto, ya que hay problemas que solo con recursin pueden ser resueltos, los ciclos no nos ayudan.

IV. Desarrollo de aplicaciones con manejo de archivos de texto y de excepciones en JAVA

Componentes de recursin Una funcin recursiva finita se compone de: Caso base: una solucin simple para un caso particular del problema(puede haber ms de un caso base) Caso recursivo: una solucin que involucra volver a utilizar la funcin original.

IV. Desarrollo de aplicaciones con manejo de archivos de texto y de excepciones en JAVA

Recursin Considera el caso de la funcin factorial de n definida como la multiplicacin de n por todos los nmeros que estn detrs de el hasta el 1.

1 n! =
n *(n-1)*(n-2)*... 1

si n = 0
si n > 0

Ejemplo:

4! = 4 * 3 * 2 * 1 = 24

Nota: n! Se define como n factorial

IV. Desarrollo de aplicaciones con manejo de archivos de texto y de excepciones en JAVA

Recursin

En forma recursiva se define as (para valores no negativos de n):

1 n! =

si n = 0 (caso base)

n *(n-1)!

si n > 0 (caso recursivo)

IV. Desarrollo de aplicaciones con manejo de archivos de texto y de excepciones en JAVA

Supn que Pepe quiere calcular 4!.... Cuanto es 3! ? Cuanto es 2! ? Cuanto es 1! ?

4! = 4 * 3! Cuanto es 0! ?

3! = 3 * 2!

2! = 2 * 1!

1! = 1 * 0!

0! = 1

IV. Desarrollo de aplicaciones con manejo de archivos de texto y de excepciones en JAVA

...clculo de 4! 4! es 24 3 ! es 6 2! es 2

4! = 4 * 3! =4*6

1! es 1

3! = 3 * 2! =3*2=6 0! es 1

2! = 2 * 1! =2*1=2

1! = 1 * 0! =1*1=1

IV. Desarrollo de aplicaciones con manejo de archivos de texto y de excepciones en JAVA

qu hay dentro de la funcin public static int fact(int n){ if (n == 0) { return 1; } else { return n * fact(n - 1); } }

IV. Desarrollo de aplicaciones con manejo de archivos de texto y de excepciones en JAVA

Caso Base El caso base en recursion se llama al ultimo valor por el cual se termina la recursin, en el caso del ejemplo se identifica por el if if (n == 0) { return 1; } El caso base aqu es cero, entonces cuando el mtodo se llama a el mismo con un cero, en ese momento se para la recursin y se regresa el valor 1, para entonces ls dems llamadas se puedan completar.

IV. Desarrollo de aplicaciones con manejo de archivos de texto y de excepciones en JAVA

Caso Recursivo Se vuelve a llamar a la funcin pero con un valor que permita poder llegar al caso base (el cual en este caso es cero), entonces lo hacemos con n-1 else { return n * fact(n - 1); }

El return en realidad no se efectua, pues se tiene que volver a llamar el mtodo de nuevo pero con un valor menor, entonces se queda pendiente y se realiza el clculo, terminando con una llamada sucesiva del mismo mtodo y quedando valores pendientes hasta llegar al caso base.

IV. Desarrollo de aplicaciones con manejo de archivos de texto y de excepciones en JAVA

con el mtodo es lo mismo 3 24 4!= 4 * 3! 6 3!= 3 * 2! 2 2 2!= 2 * 1!

1 1 1!= 1 * 0!

0 1 0!= 1

IV. Desarrollo de aplicaciones con manejo de archivos de texto y de excepciones en JAVA

Notas Todo mtodo recursivo debe tener un caso base. Un mtodo recursivo debe volverse a llamar a el mismo pero con un valor diferente que permita hacer que se llegue a tocar el caso base.

IV. Desarrollo de aplicaciones con manejo de archivos de texto y de excepciones en JAVA

Ejemplo completo
import java.io.*; public class AplicacionFactorial { private static BufferedReader ent = new BufferedReader( new InputStreamReader(System.in)); private static PrintWriter sal = new PrintWriter(System.out,true); private static PrintWriter salErr = new PrintWriter(System.err,true); private static int factorial (int n) { if (n == 0) { return 1; } else { return n * factorial (n-1); } }

IV. Desarrollo de aplicaciones con manejo de archivos de texto y de excepciones en JAVA

Ejemplo completo (Cont.) public static void main(String[] args) throws IOException { int numero; salErr.println("Da el numero"); numero = Integer.parseInt(ent.readLine()); sal.println("Factorial de " + numero + " = " + factorial(numero)); } }

IV. Desarrollo de aplicaciones con manejo de archivos de texto y de excepciones en JAVA

Ejemplo de la Ejecucin

También podría gustarte