recursividad 100329105433-phpapp01

Post on 04-Jul-2015

400 Views

Category:

Education

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Recursividad en java

TRANSCRIPT

Eldon Centella Ribera

Cualquier proceso puede ser definido de forma iterativa y de forma recursiva

1048790 Un proceso iterativo es aqueacutel que requiere de la repeticioacuten expliacutecita de cierta accioacuten

1048790 Un proceso es recursivo si estaacute definido total o parcialmente en teacuterminos de siacute mismo

Para calcular 4 por ejemplo se puede utilizar un proceso iterativo o uno recursivo

De manera iterativa

4 = 1 2 3 4 = 24

Para definir 4 de manera recursiva se tiene que definirlo en teacuterminos de factorial es decir en la definicioacuten (parte derecha de la igualdad) tiene que aparecer el factorial

De manera recursiva

4 = 4 3

Se observa que en el caacutelculo de 4 fue muyimportante el hecho de que 0 es igual a 1 iquestQueacutehubiera pasado si 0 se calcularaacute como secalculoacute los demaacutes factoriales Nunca se hubieraterminado el proceso o sea tendriacuteamos unproceso infinito

Entonces toda definicioacuten recursiva debe teneral menos una definicioacuten base Esta definicioacutenbase proporciona la solucioacuten de salida de larecursividad

Para calcular 4 3 2 y 1 Se uso unadefinicioacuten recursiva por lo que se estuvoentrando en recursioacuten y cuando se alcanzoacute ladefinicioacuten base se comenzoacute a salir de recursioacuten

Conclusiones

Un proceso es recursivo si estaacute definido total o parcialmente es teacuterminos de siacute mismo

Todo proceso recursivo debe tener al menos una definicioacuten base y una definicioacuten recursiva

La solucioacuten recursiva a un problema de repeticioacuten se obtiene respondiendo dos preguntas

1 iquestCoacutemo se resuelve el caso maacutes pequentildeo del problema

La respuesta a esta pregunta debe ser no-recursiva y plantear una condicioacuten de salida es decir proporcionar la definicioacuten base

En el caacutelculo de factorial la pregunta seriacuteaiquestcuaacutel es el nuacutemero maacutes pequentildeo para el que sepuede obtener factorial

2 iquestCoacutemo se resuelve un caso general del problema sabiendo que ya se tiene el caso anterior maacutes pequentildeo

De tal forma que la definicioacuten recursiva de n es

a) n = 1 si n = 0 1048790 Definicioacuten base

b) n = n (n ndash 1) si n gt 0 1048790 Definicioacuten recursiva

Dependiendo del problema que implemente elmoacutedulo eacuteste diagrama se puede vermodificado

Por ejemplo si tiene maacutes de una definicioacutenbase si tiene maacutes de una definicioacuten recursiva osi en la solucioacuten recursiva tiene que realizaralguna operacioacuten antes de volverse a ejecutar ono

1o Hace que la funcioacuten tome el valor de lo que se estaacute regresando En factorial si n == 0 factorial = 1 sino factorial= n factorial(n ndash 1)

2o Termina la ejecucioacuten de la funcioacuten regresando el control de la ejecucioacuten al moacutedulo en que fue llamada (a la instruccioacuten que se debe ejecutar despueacutes de que la funcioacuten fue llamada)

La solucioacuten recursiva de un problema se obtiene respondiendo dos preguntas iquestcoacutemo se resuelve el caso maacutes pequentildeo y iquestcoacutemo se resuelve un caso general sabiendo que ya se tiene el caso anterior maacutes pequentildeo

Para implementar soluciones recursivas se utilizan los moacutedulos las funciones (int float double etc)

El return de una funcioacuten realiza dos operaciones asigna a la funcioacuten el valor que regresa y termina la ejecucioacuten de la misma regresando el control a la siguiente instruccioacuten que se tiene que realizar despueacutes de la llamada a la funcioacuten

public static void imprimeNaturales(int n)

if (n == 1) Systemoutprintln(ldquo1rdquo) else Systemoutprintln(n) imprimeNaturales(n ndash 1) _________________________________ 2 public static void main(String args[]) hellip imprimeNaturales(5) Systemoutprintln(ldquoFin del procesordquo)

______ 1

Considerar un ejemplo maacutes la serie de los nuacutemeros de Fibonacci cuya definicioacuten ya se nos da de manera recursiva Vamos a escribir su implementacioacuten y posteriormente haremos la representacioacuten de la pila F0 = 1

F1 = 1

Fn = Fn -1 + Fn ndash 2 si n gt 1

Para simplificar el coacutedigo

Cuando la estructura de datos es recursiva ejemplo aacuterboles

Cuando los meacutetodos usen arreglos largos

Cuando el meacutetodo cambia de manera impredecible de campos

Cuando las iteraciones sean la mejor opcioacuten

25

iquestCuaacutendo no usar recursividad

Cuando un procedimiento incluye unallamada a siacute mismo se conoce comorecursioacuten directa

26

Cuando un procedimiento llama a otroprocedimiento y eacuteste causa que elprocedimiento original sea invocado se conocecomo recursioacuten indirecta

NOTA Cuando un procedimiento recursivo se llama recursivamentea si mismo varias veces para cada llamada se crean copiasindependientes de las variables declaradas en el procedimiento

27

Cualquier proceso puede ser definido de forma iterativa y de forma recursiva

1048790 Un proceso iterativo es aqueacutel que requiere de la repeticioacuten expliacutecita de cierta accioacuten

1048790 Un proceso es recursivo si estaacute definido total o parcialmente en teacuterminos de siacute mismo

Para calcular 4 por ejemplo se puede utilizar un proceso iterativo o uno recursivo

De manera iterativa

4 = 1 2 3 4 = 24

Para definir 4 de manera recursiva se tiene que definirlo en teacuterminos de factorial es decir en la definicioacuten (parte derecha de la igualdad) tiene que aparecer el factorial

De manera recursiva

4 = 4 3

Se observa que en el caacutelculo de 4 fue muyimportante el hecho de que 0 es igual a 1 iquestQueacutehubiera pasado si 0 se calcularaacute como secalculoacute los demaacutes factoriales Nunca se hubieraterminado el proceso o sea tendriacuteamos unproceso infinito

Entonces toda definicioacuten recursiva debe teneral menos una definicioacuten base Esta definicioacutenbase proporciona la solucioacuten de salida de larecursividad

Para calcular 4 3 2 y 1 Se uso unadefinicioacuten recursiva por lo que se estuvoentrando en recursioacuten y cuando se alcanzoacute ladefinicioacuten base se comenzoacute a salir de recursioacuten

Conclusiones

Un proceso es recursivo si estaacute definido total o parcialmente es teacuterminos de siacute mismo

Todo proceso recursivo debe tener al menos una definicioacuten base y una definicioacuten recursiva

La solucioacuten recursiva a un problema de repeticioacuten se obtiene respondiendo dos preguntas

1 iquestCoacutemo se resuelve el caso maacutes pequentildeo del problema

La respuesta a esta pregunta debe ser no-recursiva y plantear una condicioacuten de salida es decir proporcionar la definicioacuten base

En el caacutelculo de factorial la pregunta seriacuteaiquestcuaacutel es el nuacutemero maacutes pequentildeo para el que sepuede obtener factorial

2 iquestCoacutemo se resuelve un caso general del problema sabiendo que ya se tiene el caso anterior maacutes pequentildeo

De tal forma que la definicioacuten recursiva de n es

a) n = 1 si n = 0 1048790 Definicioacuten base

b) n = n (n ndash 1) si n gt 0 1048790 Definicioacuten recursiva

Dependiendo del problema que implemente elmoacutedulo eacuteste diagrama se puede vermodificado

Por ejemplo si tiene maacutes de una definicioacutenbase si tiene maacutes de una definicioacuten recursiva osi en la solucioacuten recursiva tiene que realizaralguna operacioacuten antes de volverse a ejecutar ono

1o Hace que la funcioacuten tome el valor de lo que se estaacute regresando En factorial si n == 0 factorial = 1 sino factorial= n factorial(n ndash 1)

2o Termina la ejecucioacuten de la funcioacuten regresando el control de la ejecucioacuten al moacutedulo en que fue llamada (a la instruccioacuten que se debe ejecutar despueacutes de que la funcioacuten fue llamada)

La solucioacuten recursiva de un problema se obtiene respondiendo dos preguntas iquestcoacutemo se resuelve el caso maacutes pequentildeo y iquestcoacutemo se resuelve un caso general sabiendo que ya se tiene el caso anterior maacutes pequentildeo

Para implementar soluciones recursivas se utilizan los moacutedulos las funciones (int float double etc)

El return de una funcioacuten realiza dos operaciones asigna a la funcioacuten el valor que regresa y termina la ejecucioacuten de la misma regresando el control a la siguiente instruccioacuten que se tiene que realizar despueacutes de la llamada a la funcioacuten

public static void imprimeNaturales(int n)

if (n == 1) Systemoutprintln(ldquo1rdquo) else Systemoutprintln(n) imprimeNaturales(n ndash 1) _________________________________ 2 public static void main(String args[]) hellip imprimeNaturales(5) Systemoutprintln(ldquoFin del procesordquo)

______ 1

Considerar un ejemplo maacutes la serie de los nuacutemeros de Fibonacci cuya definicioacuten ya se nos da de manera recursiva Vamos a escribir su implementacioacuten y posteriormente haremos la representacioacuten de la pila F0 = 1

F1 = 1

Fn = Fn -1 + Fn ndash 2 si n gt 1

Para simplificar el coacutedigo

Cuando la estructura de datos es recursiva ejemplo aacuterboles

Cuando los meacutetodos usen arreglos largos

Cuando el meacutetodo cambia de manera impredecible de campos

Cuando las iteraciones sean la mejor opcioacuten

25

iquestCuaacutendo no usar recursividad

Cuando un procedimiento incluye unallamada a siacute mismo se conoce comorecursioacuten directa

26

Cuando un procedimiento llama a otroprocedimiento y eacuteste causa que elprocedimiento original sea invocado se conocecomo recursioacuten indirecta

NOTA Cuando un procedimiento recursivo se llama recursivamentea si mismo varias veces para cada llamada se crean copiasindependientes de las variables declaradas en el procedimiento

27

Para calcular 4 por ejemplo se puede utilizar un proceso iterativo o uno recursivo

De manera iterativa

4 = 1 2 3 4 = 24

Para definir 4 de manera recursiva se tiene que definirlo en teacuterminos de factorial es decir en la definicioacuten (parte derecha de la igualdad) tiene que aparecer el factorial

De manera recursiva

4 = 4 3

Se observa que en el caacutelculo de 4 fue muyimportante el hecho de que 0 es igual a 1 iquestQueacutehubiera pasado si 0 se calcularaacute como secalculoacute los demaacutes factoriales Nunca se hubieraterminado el proceso o sea tendriacuteamos unproceso infinito

Entonces toda definicioacuten recursiva debe teneral menos una definicioacuten base Esta definicioacutenbase proporciona la solucioacuten de salida de larecursividad

Para calcular 4 3 2 y 1 Se uso unadefinicioacuten recursiva por lo que se estuvoentrando en recursioacuten y cuando se alcanzoacute ladefinicioacuten base se comenzoacute a salir de recursioacuten

Conclusiones

Un proceso es recursivo si estaacute definido total o parcialmente es teacuterminos de siacute mismo

Todo proceso recursivo debe tener al menos una definicioacuten base y una definicioacuten recursiva

La solucioacuten recursiva a un problema de repeticioacuten se obtiene respondiendo dos preguntas

1 iquestCoacutemo se resuelve el caso maacutes pequentildeo del problema

La respuesta a esta pregunta debe ser no-recursiva y plantear una condicioacuten de salida es decir proporcionar la definicioacuten base

En el caacutelculo de factorial la pregunta seriacuteaiquestcuaacutel es el nuacutemero maacutes pequentildeo para el que sepuede obtener factorial

2 iquestCoacutemo se resuelve un caso general del problema sabiendo que ya se tiene el caso anterior maacutes pequentildeo

De tal forma que la definicioacuten recursiva de n es

a) n = 1 si n = 0 1048790 Definicioacuten base

b) n = n (n ndash 1) si n gt 0 1048790 Definicioacuten recursiva

Dependiendo del problema que implemente elmoacutedulo eacuteste diagrama se puede vermodificado

Por ejemplo si tiene maacutes de una definicioacutenbase si tiene maacutes de una definicioacuten recursiva osi en la solucioacuten recursiva tiene que realizaralguna operacioacuten antes de volverse a ejecutar ono

1o Hace que la funcioacuten tome el valor de lo que se estaacute regresando En factorial si n == 0 factorial = 1 sino factorial= n factorial(n ndash 1)

2o Termina la ejecucioacuten de la funcioacuten regresando el control de la ejecucioacuten al moacutedulo en que fue llamada (a la instruccioacuten que se debe ejecutar despueacutes de que la funcioacuten fue llamada)

La solucioacuten recursiva de un problema se obtiene respondiendo dos preguntas iquestcoacutemo se resuelve el caso maacutes pequentildeo y iquestcoacutemo se resuelve un caso general sabiendo que ya se tiene el caso anterior maacutes pequentildeo

Para implementar soluciones recursivas se utilizan los moacutedulos las funciones (int float double etc)

El return de una funcioacuten realiza dos operaciones asigna a la funcioacuten el valor que regresa y termina la ejecucioacuten de la misma regresando el control a la siguiente instruccioacuten que se tiene que realizar despueacutes de la llamada a la funcioacuten

public static void imprimeNaturales(int n)

if (n == 1) Systemoutprintln(ldquo1rdquo) else Systemoutprintln(n) imprimeNaturales(n ndash 1) _________________________________ 2 public static void main(String args[]) hellip imprimeNaturales(5) Systemoutprintln(ldquoFin del procesordquo)

______ 1

Considerar un ejemplo maacutes la serie de los nuacutemeros de Fibonacci cuya definicioacuten ya se nos da de manera recursiva Vamos a escribir su implementacioacuten y posteriormente haremos la representacioacuten de la pila F0 = 1

F1 = 1

Fn = Fn -1 + Fn ndash 2 si n gt 1

Para simplificar el coacutedigo

Cuando la estructura de datos es recursiva ejemplo aacuterboles

Cuando los meacutetodos usen arreglos largos

Cuando el meacutetodo cambia de manera impredecible de campos

Cuando las iteraciones sean la mejor opcioacuten

25

iquestCuaacutendo no usar recursividad

Cuando un procedimiento incluye unallamada a siacute mismo se conoce comorecursioacuten directa

26

Cuando un procedimiento llama a otroprocedimiento y eacuteste causa que elprocedimiento original sea invocado se conocecomo recursioacuten indirecta

NOTA Cuando un procedimiento recursivo se llama recursivamentea si mismo varias veces para cada llamada se crean copiasindependientes de las variables declaradas en el procedimiento

27

Para definir 4 de manera recursiva se tiene que definirlo en teacuterminos de factorial es decir en la definicioacuten (parte derecha de la igualdad) tiene que aparecer el factorial

De manera recursiva

4 = 4 3

Se observa que en el caacutelculo de 4 fue muyimportante el hecho de que 0 es igual a 1 iquestQueacutehubiera pasado si 0 se calcularaacute como secalculoacute los demaacutes factoriales Nunca se hubieraterminado el proceso o sea tendriacuteamos unproceso infinito

Entonces toda definicioacuten recursiva debe teneral menos una definicioacuten base Esta definicioacutenbase proporciona la solucioacuten de salida de larecursividad

Para calcular 4 3 2 y 1 Se uso unadefinicioacuten recursiva por lo que se estuvoentrando en recursioacuten y cuando se alcanzoacute ladefinicioacuten base se comenzoacute a salir de recursioacuten

Conclusiones

Un proceso es recursivo si estaacute definido total o parcialmente es teacuterminos de siacute mismo

Todo proceso recursivo debe tener al menos una definicioacuten base y una definicioacuten recursiva

La solucioacuten recursiva a un problema de repeticioacuten se obtiene respondiendo dos preguntas

1 iquestCoacutemo se resuelve el caso maacutes pequentildeo del problema

La respuesta a esta pregunta debe ser no-recursiva y plantear una condicioacuten de salida es decir proporcionar la definicioacuten base

En el caacutelculo de factorial la pregunta seriacuteaiquestcuaacutel es el nuacutemero maacutes pequentildeo para el que sepuede obtener factorial

2 iquestCoacutemo se resuelve un caso general del problema sabiendo que ya se tiene el caso anterior maacutes pequentildeo

De tal forma que la definicioacuten recursiva de n es

a) n = 1 si n = 0 1048790 Definicioacuten base

b) n = n (n ndash 1) si n gt 0 1048790 Definicioacuten recursiva

Dependiendo del problema que implemente elmoacutedulo eacuteste diagrama se puede vermodificado

Por ejemplo si tiene maacutes de una definicioacutenbase si tiene maacutes de una definicioacuten recursiva osi en la solucioacuten recursiva tiene que realizaralguna operacioacuten antes de volverse a ejecutar ono

1o Hace que la funcioacuten tome el valor de lo que se estaacute regresando En factorial si n == 0 factorial = 1 sino factorial= n factorial(n ndash 1)

2o Termina la ejecucioacuten de la funcioacuten regresando el control de la ejecucioacuten al moacutedulo en que fue llamada (a la instruccioacuten que se debe ejecutar despueacutes de que la funcioacuten fue llamada)

La solucioacuten recursiva de un problema se obtiene respondiendo dos preguntas iquestcoacutemo se resuelve el caso maacutes pequentildeo y iquestcoacutemo se resuelve un caso general sabiendo que ya se tiene el caso anterior maacutes pequentildeo

Para implementar soluciones recursivas se utilizan los moacutedulos las funciones (int float double etc)

El return de una funcioacuten realiza dos operaciones asigna a la funcioacuten el valor que regresa y termina la ejecucioacuten de la misma regresando el control a la siguiente instruccioacuten que se tiene que realizar despueacutes de la llamada a la funcioacuten

public static void imprimeNaturales(int n)

if (n == 1) Systemoutprintln(ldquo1rdquo) else Systemoutprintln(n) imprimeNaturales(n ndash 1) _________________________________ 2 public static void main(String args[]) hellip imprimeNaturales(5) Systemoutprintln(ldquoFin del procesordquo)

______ 1

Considerar un ejemplo maacutes la serie de los nuacutemeros de Fibonacci cuya definicioacuten ya se nos da de manera recursiva Vamos a escribir su implementacioacuten y posteriormente haremos la representacioacuten de la pila F0 = 1

F1 = 1

Fn = Fn -1 + Fn ndash 2 si n gt 1

Para simplificar el coacutedigo

Cuando la estructura de datos es recursiva ejemplo aacuterboles

Cuando los meacutetodos usen arreglos largos

Cuando el meacutetodo cambia de manera impredecible de campos

Cuando las iteraciones sean la mejor opcioacuten

25

iquestCuaacutendo no usar recursividad

Cuando un procedimiento incluye unallamada a siacute mismo se conoce comorecursioacuten directa

26

Cuando un procedimiento llama a otroprocedimiento y eacuteste causa que elprocedimiento original sea invocado se conocecomo recursioacuten indirecta

NOTA Cuando un procedimiento recursivo se llama recursivamentea si mismo varias veces para cada llamada se crean copiasindependientes de las variables declaradas en el procedimiento

27

Se observa que en el caacutelculo de 4 fue muyimportante el hecho de que 0 es igual a 1 iquestQueacutehubiera pasado si 0 se calcularaacute como secalculoacute los demaacutes factoriales Nunca se hubieraterminado el proceso o sea tendriacuteamos unproceso infinito

Entonces toda definicioacuten recursiva debe teneral menos una definicioacuten base Esta definicioacutenbase proporciona la solucioacuten de salida de larecursividad

Para calcular 4 3 2 y 1 Se uso unadefinicioacuten recursiva por lo que se estuvoentrando en recursioacuten y cuando se alcanzoacute ladefinicioacuten base se comenzoacute a salir de recursioacuten

Conclusiones

Un proceso es recursivo si estaacute definido total o parcialmente es teacuterminos de siacute mismo

Todo proceso recursivo debe tener al menos una definicioacuten base y una definicioacuten recursiva

La solucioacuten recursiva a un problema de repeticioacuten se obtiene respondiendo dos preguntas

1 iquestCoacutemo se resuelve el caso maacutes pequentildeo del problema

La respuesta a esta pregunta debe ser no-recursiva y plantear una condicioacuten de salida es decir proporcionar la definicioacuten base

En el caacutelculo de factorial la pregunta seriacuteaiquestcuaacutel es el nuacutemero maacutes pequentildeo para el que sepuede obtener factorial

2 iquestCoacutemo se resuelve un caso general del problema sabiendo que ya se tiene el caso anterior maacutes pequentildeo

De tal forma que la definicioacuten recursiva de n es

a) n = 1 si n = 0 1048790 Definicioacuten base

b) n = n (n ndash 1) si n gt 0 1048790 Definicioacuten recursiva

Dependiendo del problema que implemente elmoacutedulo eacuteste diagrama se puede vermodificado

Por ejemplo si tiene maacutes de una definicioacutenbase si tiene maacutes de una definicioacuten recursiva osi en la solucioacuten recursiva tiene que realizaralguna operacioacuten antes de volverse a ejecutar ono

1o Hace que la funcioacuten tome el valor de lo que se estaacute regresando En factorial si n == 0 factorial = 1 sino factorial= n factorial(n ndash 1)

2o Termina la ejecucioacuten de la funcioacuten regresando el control de la ejecucioacuten al moacutedulo en que fue llamada (a la instruccioacuten que se debe ejecutar despueacutes de que la funcioacuten fue llamada)

La solucioacuten recursiva de un problema se obtiene respondiendo dos preguntas iquestcoacutemo se resuelve el caso maacutes pequentildeo y iquestcoacutemo se resuelve un caso general sabiendo que ya se tiene el caso anterior maacutes pequentildeo

Para implementar soluciones recursivas se utilizan los moacutedulos las funciones (int float double etc)

El return de una funcioacuten realiza dos operaciones asigna a la funcioacuten el valor que regresa y termina la ejecucioacuten de la misma regresando el control a la siguiente instruccioacuten que se tiene que realizar despueacutes de la llamada a la funcioacuten

public static void imprimeNaturales(int n)

if (n == 1) Systemoutprintln(ldquo1rdquo) else Systemoutprintln(n) imprimeNaturales(n ndash 1) _________________________________ 2 public static void main(String args[]) hellip imprimeNaturales(5) Systemoutprintln(ldquoFin del procesordquo)

______ 1

Considerar un ejemplo maacutes la serie de los nuacutemeros de Fibonacci cuya definicioacuten ya se nos da de manera recursiva Vamos a escribir su implementacioacuten y posteriormente haremos la representacioacuten de la pila F0 = 1

F1 = 1

Fn = Fn -1 + Fn ndash 2 si n gt 1

Para simplificar el coacutedigo

Cuando la estructura de datos es recursiva ejemplo aacuterboles

Cuando los meacutetodos usen arreglos largos

Cuando el meacutetodo cambia de manera impredecible de campos

Cuando las iteraciones sean la mejor opcioacuten

25

iquestCuaacutendo no usar recursividad

Cuando un procedimiento incluye unallamada a siacute mismo se conoce comorecursioacuten directa

26

Cuando un procedimiento llama a otroprocedimiento y eacuteste causa que elprocedimiento original sea invocado se conocecomo recursioacuten indirecta

NOTA Cuando un procedimiento recursivo se llama recursivamentea si mismo varias veces para cada llamada se crean copiasindependientes de las variables declaradas en el procedimiento

27

Entonces toda definicioacuten recursiva debe teneral menos una definicioacuten base Esta definicioacutenbase proporciona la solucioacuten de salida de larecursividad

Para calcular 4 3 2 y 1 Se uso unadefinicioacuten recursiva por lo que se estuvoentrando en recursioacuten y cuando se alcanzoacute ladefinicioacuten base se comenzoacute a salir de recursioacuten

Conclusiones

Un proceso es recursivo si estaacute definido total o parcialmente es teacuterminos de siacute mismo

Todo proceso recursivo debe tener al menos una definicioacuten base y una definicioacuten recursiva

La solucioacuten recursiva a un problema de repeticioacuten se obtiene respondiendo dos preguntas

1 iquestCoacutemo se resuelve el caso maacutes pequentildeo del problema

La respuesta a esta pregunta debe ser no-recursiva y plantear una condicioacuten de salida es decir proporcionar la definicioacuten base

En el caacutelculo de factorial la pregunta seriacuteaiquestcuaacutel es el nuacutemero maacutes pequentildeo para el que sepuede obtener factorial

2 iquestCoacutemo se resuelve un caso general del problema sabiendo que ya se tiene el caso anterior maacutes pequentildeo

De tal forma que la definicioacuten recursiva de n es

a) n = 1 si n = 0 1048790 Definicioacuten base

b) n = n (n ndash 1) si n gt 0 1048790 Definicioacuten recursiva

Dependiendo del problema que implemente elmoacutedulo eacuteste diagrama se puede vermodificado

Por ejemplo si tiene maacutes de una definicioacutenbase si tiene maacutes de una definicioacuten recursiva osi en la solucioacuten recursiva tiene que realizaralguna operacioacuten antes de volverse a ejecutar ono

1o Hace que la funcioacuten tome el valor de lo que se estaacute regresando En factorial si n == 0 factorial = 1 sino factorial= n factorial(n ndash 1)

2o Termina la ejecucioacuten de la funcioacuten regresando el control de la ejecucioacuten al moacutedulo en que fue llamada (a la instruccioacuten que se debe ejecutar despueacutes de que la funcioacuten fue llamada)

La solucioacuten recursiva de un problema se obtiene respondiendo dos preguntas iquestcoacutemo se resuelve el caso maacutes pequentildeo y iquestcoacutemo se resuelve un caso general sabiendo que ya se tiene el caso anterior maacutes pequentildeo

Para implementar soluciones recursivas se utilizan los moacutedulos las funciones (int float double etc)

El return de una funcioacuten realiza dos operaciones asigna a la funcioacuten el valor que regresa y termina la ejecucioacuten de la misma regresando el control a la siguiente instruccioacuten que se tiene que realizar despueacutes de la llamada a la funcioacuten

public static void imprimeNaturales(int n)

if (n == 1) Systemoutprintln(ldquo1rdquo) else Systemoutprintln(n) imprimeNaturales(n ndash 1) _________________________________ 2 public static void main(String args[]) hellip imprimeNaturales(5) Systemoutprintln(ldquoFin del procesordquo)

______ 1

Considerar un ejemplo maacutes la serie de los nuacutemeros de Fibonacci cuya definicioacuten ya se nos da de manera recursiva Vamos a escribir su implementacioacuten y posteriormente haremos la representacioacuten de la pila F0 = 1

F1 = 1

Fn = Fn -1 + Fn ndash 2 si n gt 1

Para simplificar el coacutedigo

Cuando la estructura de datos es recursiva ejemplo aacuterboles

Cuando los meacutetodos usen arreglos largos

Cuando el meacutetodo cambia de manera impredecible de campos

Cuando las iteraciones sean la mejor opcioacuten

25

iquestCuaacutendo no usar recursividad

Cuando un procedimiento incluye unallamada a siacute mismo se conoce comorecursioacuten directa

26

Cuando un procedimiento llama a otroprocedimiento y eacuteste causa que elprocedimiento original sea invocado se conocecomo recursioacuten indirecta

NOTA Cuando un procedimiento recursivo se llama recursivamentea si mismo varias veces para cada llamada se crean copiasindependientes de las variables declaradas en el procedimiento

27

Para calcular 4 3 2 y 1 Se uso unadefinicioacuten recursiva por lo que se estuvoentrando en recursioacuten y cuando se alcanzoacute ladefinicioacuten base se comenzoacute a salir de recursioacuten

Conclusiones

Un proceso es recursivo si estaacute definido total o parcialmente es teacuterminos de siacute mismo

Todo proceso recursivo debe tener al menos una definicioacuten base y una definicioacuten recursiva

La solucioacuten recursiva a un problema de repeticioacuten se obtiene respondiendo dos preguntas

1 iquestCoacutemo se resuelve el caso maacutes pequentildeo del problema

La respuesta a esta pregunta debe ser no-recursiva y plantear una condicioacuten de salida es decir proporcionar la definicioacuten base

En el caacutelculo de factorial la pregunta seriacuteaiquestcuaacutel es el nuacutemero maacutes pequentildeo para el que sepuede obtener factorial

2 iquestCoacutemo se resuelve un caso general del problema sabiendo que ya se tiene el caso anterior maacutes pequentildeo

De tal forma que la definicioacuten recursiva de n es

a) n = 1 si n = 0 1048790 Definicioacuten base

b) n = n (n ndash 1) si n gt 0 1048790 Definicioacuten recursiva

Dependiendo del problema que implemente elmoacutedulo eacuteste diagrama se puede vermodificado

Por ejemplo si tiene maacutes de una definicioacutenbase si tiene maacutes de una definicioacuten recursiva osi en la solucioacuten recursiva tiene que realizaralguna operacioacuten antes de volverse a ejecutar ono

1o Hace que la funcioacuten tome el valor de lo que se estaacute regresando En factorial si n == 0 factorial = 1 sino factorial= n factorial(n ndash 1)

2o Termina la ejecucioacuten de la funcioacuten regresando el control de la ejecucioacuten al moacutedulo en que fue llamada (a la instruccioacuten que se debe ejecutar despueacutes de que la funcioacuten fue llamada)

La solucioacuten recursiva de un problema se obtiene respondiendo dos preguntas iquestcoacutemo se resuelve el caso maacutes pequentildeo y iquestcoacutemo se resuelve un caso general sabiendo que ya se tiene el caso anterior maacutes pequentildeo

Para implementar soluciones recursivas se utilizan los moacutedulos las funciones (int float double etc)

El return de una funcioacuten realiza dos operaciones asigna a la funcioacuten el valor que regresa y termina la ejecucioacuten de la misma regresando el control a la siguiente instruccioacuten que se tiene que realizar despueacutes de la llamada a la funcioacuten

public static void imprimeNaturales(int n)

if (n == 1) Systemoutprintln(ldquo1rdquo) else Systemoutprintln(n) imprimeNaturales(n ndash 1) _________________________________ 2 public static void main(String args[]) hellip imprimeNaturales(5) Systemoutprintln(ldquoFin del procesordquo)

______ 1

Considerar un ejemplo maacutes la serie de los nuacutemeros de Fibonacci cuya definicioacuten ya se nos da de manera recursiva Vamos a escribir su implementacioacuten y posteriormente haremos la representacioacuten de la pila F0 = 1

F1 = 1

Fn = Fn -1 + Fn ndash 2 si n gt 1

Para simplificar el coacutedigo

Cuando la estructura de datos es recursiva ejemplo aacuterboles

Cuando los meacutetodos usen arreglos largos

Cuando el meacutetodo cambia de manera impredecible de campos

Cuando las iteraciones sean la mejor opcioacuten

25

iquestCuaacutendo no usar recursividad

Cuando un procedimiento incluye unallamada a siacute mismo se conoce comorecursioacuten directa

26

Cuando un procedimiento llama a otroprocedimiento y eacuteste causa que elprocedimiento original sea invocado se conocecomo recursioacuten indirecta

NOTA Cuando un procedimiento recursivo se llama recursivamentea si mismo varias veces para cada llamada se crean copiasindependientes de las variables declaradas en el procedimiento

27

Conclusiones

Un proceso es recursivo si estaacute definido total o parcialmente es teacuterminos de siacute mismo

Todo proceso recursivo debe tener al menos una definicioacuten base y una definicioacuten recursiva

La solucioacuten recursiva a un problema de repeticioacuten se obtiene respondiendo dos preguntas

1 iquestCoacutemo se resuelve el caso maacutes pequentildeo del problema

La respuesta a esta pregunta debe ser no-recursiva y plantear una condicioacuten de salida es decir proporcionar la definicioacuten base

En el caacutelculo de factorial la pregunta seriacuteaiquestcuaacutel es el nuacutemero maacutes pequentildeo para el que sepuede obtener factorial

2 iquestCoacutemo se resuelve un caso general del problema sabiendo que ya se tiene el caso anterior maacutes pequentildeo

De tal forma que la definicioacuten recursiva de n es

a) n = 1 si n = 0 1048790 Definicioacuten base

b) n = n (n ndash 1) si n gt 0 1048790 Definicioacuten recursiva

Dependiendo del problema que implemente elmoacutedulo eacuteste diagrama se puede vermodificado

Por ejemplo si tiene maacutes de una definicioacutenbase si tiene maacutes de una definicioacuten recursiva osi en la solucioacuten recursiva tiene que realizaralguna operacioacuten antes de volverse a ejecutar ono

1o Hace que la funcioacuten tome el valor de lo que se estaacute regresando En factorial si n == 0 factorial = 1 sino factorial= n factorial(n ndash 1)

2o Termina la ejecucioacuten de la funcioacuten regresando el control de la ejecucioacuten al moacutedulo en que fue llamada (a la instruccioacuten que se debe ejecutar despueacutes de que la funcioacuten fue llamada)

La solucioacuten recursiva de un problema se obtiene respondiendo dos preguntas iquestcoacutemo se resuelve el caso maacutes pequentildeo y iquestcoacutemo se resuelve un caso general sabiendo que ya se tiene el caso anterior maacutes pequentildeo

Para implementar soluciones recursivas se utilizan los moacutedulos las funciones (int float double etc)

El return de una funcioacuten realiza dos operaciones asigna a la funcioacuten el valor que regresa y termina la ejecucioacuten de la misma regresando el control a la siguiente instruccioacuten que se tiene que realizar despueacutes de la llamada a la funcioacuten

public static void imprimeNaturales(int n)

if (n == 1) Systemoutprintln(ldquo1rdquo) else Systemoutprintln(n) imprimeNaturales(n ndash 1) _________________________________ 2 public static void main(String args[]) hellip imprimeNaturales(5) Systemoutprintln(ldquoFin del procesordquo)

______ 1

Considerar un ejemplo maacutes la serie de los nuacutemeros de Fibonacci cuya definicioacuten ya se nos da de manera recursiva Vamos a escribir su implementacioacuten y posteriormente haremos la representacioacuten de la pila F0 = 1

F1 = 1

Fn = Fn -1 + Fn ndash 2 si n gt 1

Para simplificar el coacutedigo

Cuando la estructura de datos es recursiva ejemplo aacuterboles

Cuando los meacutetodos usen arreglos largos

Cuando el meacutetodo cambia de manera impredecible de campos

Cuando las iteraciones sean la mejor opcioacuten

25

iquestCuaacutendo no usar recursividad

Cuando un procedimiento incluye unallamada a siacute mismo se conoce comorecursioacuten directa

26

Cuando un procedimiento llama a otroprocedimiento y eacuteste causa que elprocedimiento original sea invocado se conocecomo recursioacuten indirecta

NOTA Cuando un procedimiento recursivo se llama recursivamentea si mismo varias veces para cada llamada se crean copiasindependientes de las variables declaradas en el procedimiento

27

La solucioacuten recursiva a un problema de repeticioacuten se obtiene respondiendo dos preguntas

1 iquestCoacutemo se resuelve el caso maacutes pequentildeo del problema

La respuesta a esta pregunta debe ser no-recursiva y plantear una condicioacuten de salida es decir proporcionar la definicioacuten base

En el caacutelculo de factorial la pregunta seriacuteaiquestcuaacutel es el nuacutemero maacutes pequentildeo para el que sepuede obtener factorial

2 iquestCoacutemo se resuelve un caso general del problema sabiendo que ya se tiene el caso anterior maacutes pequentildeo

De tal forma que la definicioacuten recursiva de n es

a) n = 1 si n = 0 1048790 Definicioacuten base

b) n = n (n ndash 1) si n gt 0 1048790 Definicioacuten recursiva

Dependiendo del problema que implemente elmoacutedulo eacuteste diagrama se puede vermodificado

Por ejemplo si tiene maacutes de una definicioacutenbase si tiene maacutes de una definicioacuten recursiva osi en la solucioacuten recursiva tiene que realizaralguna operacioacuten antes de volverse a ejecutar ono

1o Hace que la funcioacuten tome el valor de lo que se estaacute regresando En factorial si n == 0 factorial = 1 sino factorial= n factorial(n ndash 1)

2o Termina la ejecucioacuten de la funcioacuten regresando el control de la ejecucioacuten al moacutedulo en que fue llamada (a la instruccioacuten que se debe ejecutar despueacutes de que la funcioacuten fue llamada)

La solucioacuten recursiva de un problema se obtiene respondiendo dos preguntas iquestcoacutemo se resuelve el caso maacutes pequentildeo y iquestcoacutemo se resuelve un caso general sabiendo que ya se tiene el caso anterior maacutes pequentildeo

Para implementar soluciones recursivas se utilizan los moacutedulos las funciones (int float double etc)

El return de una funcioacuten realiza dos operaciones asigna a la funcioacuten el valor que regresa y termina la ejecucioacuten de la misma regresando el control a la siguiente instruccioacuten que se tiene que realizar despueacutes de la llamada a la funcioacuten

public static void imprimeNaturales(int n)

if (n == 1) Systemoutprintln(ldquo1rdquo) else Systemoutprintln(n) imprimeNaturales(n ndash 1) _________________________________ 2 public static void main(String args[]) hellip imprimeNaturales(5) Systemoutprintln(ldquoFin del procesordquo)

______ 1

Considerar un ejemplo maacutes la serie de los nuacutemeros de Fibonacci cuya definicioacuten ya se nos da de manera recursiva Vamos a escribir su implementacioacuten y posteriormente haremos la representacioacuten de la pila F0 = 1

F1 = 1

Fn = Fn -1 + Fn ndash 2 si n gt 1

Para simplificar el coacutedigo

Cuando la estructura de datos es recursiva ejemplo aacuterboles

Cuando los meacutetodos usen arreglos largos

Cuando el meacutetodo cambia de manera impredecible de campos

Cuando las iteraciones sean la mejor opcioacuten

25

iquestCuaacutendo no usar recursividad

Cuando un procedimiento incluye unallamada a siacute mismo se conoce comorecursioacuten directa

26

Cuando un procedimiento llama a otroprocedimiento y eacuteste causa que elprocedimiento original sea invocado se conocecomo recursioacuten indirecta

NOTA Cuando un procedimiento recursivo se llama recursivamentea si mismo varias veces para cada llamada se crean copiasindependientes de las variables declaradas en el procedimiento

27

En el caacutelculo de factorial la pregunta seriacuteaiquestcuaacutel es el nuacutemero maacutes pequentildeo para el que sepuede obtener factorial

2 iquestCoacutemo se resuelve un caso general del problema sabiendo que ya se tiene el caso anterior maacutes pequentildeo

De tal forma que la definicioacuten recursiva de n es

a) n = 1 si n = 0 1048790 Definicioacuten base

b) n = n (n ndash 1) si n gt 0 1048790 Definicioacuten recursiva

Dependiendo del problema que implemente elmoacutedulo eacuteste diagrama se puede vermodificado

Por ejemplo si tiene maacutes de una definicioacutenbase si tiene maacutes de una definicioacuten recursiva osi en la solucioacuten recursiva tiene que realizaralguna operacioacuten antes de volverse a ejecutar ono

1o Hace que la funcioacuten tome el valor de lo que se estaacute regresando En factorial si n == 0 factorial = 1 sino factorial= n factorial(n ndash 1)

2o Termina la ejecucioacuten de la funcioacuten regresando el control de la ejecucioacuten al moacutedulo en que fue llamada (a la instruccioacuten que se debe ejecutar despueacutes de que la funcioacuten fue llamada)

La solucioacuten recursiva de un problema se obtiene respondiendo dos preguntas iquestcoacutemo se resuelve el caso maacutes pequentildeo y iquestcoacutemo se resuelve un caso general sabiendo que ya se tiene el caso anterior maacutes pequentildeo

Para implementar soluciones recursivas se utilizan los moacutedulos las funciones (int float double etc)

El return de una funcioacuten realiza dos operaciones asigna a la funcioacuten el valor que regresa y termina la ejecucioacuten de la misma regresando el control a la siguiente instruccioacuten que se tiene que realizar despueacutes de la llamada a la funcioacuten

public static void imprimeNaturales(int n)

if (n == 1) Systemoutprintln(ldquo1rdquo) else Systemoutprintln(n) imprimeNaturales(n ndash 1) _________________________________ 2 public static void main(String args[]) hellip imprimeNaturales(5) Systemoutprintln(ldquoFin del procesordquo)

______ 1

Considerar un ejemplo maacutes la serie de los nuacutemeros de Fibonacci cuya definicioacuten ya se nos da de manera recursiva Vamos a escribir su implementacioacuten y posteriormente haremos la representacioacuten de la pila F0 = 1

F1 = 1

Fn = Fn -1 + Fn ndash 2 si n gt 1

Para simplificar el coacutedigo

Cuando la estructura de datos es recursiva ejemplo aacuterboles

Cuando los meacutetodos usen arreglos largos

Cuando el meacutetodo cambia de manera impredecible de campos

Cuando las iteraciones sean la mejor opcioacuten

25

iquestCuaacutendo no usar recursividad

Cuando un procedimiento incluye unallamada a siacute mismo se conoce comorecursioacuten directa

26

Cuando un procedimiento llama a otroprocedimiento y eacuteste causa que elprocedimiento original sea invocado se conocecomo recursioacuten indirecta

NOTA Cuando un procedimiento recursivo se llama recursivamentea si mismo varias veces para cada llamada se crean copiasindependientes de las variables declaradas en el procedimiento

27

De tal forma que la definicioacuten recursiva de n es

a) n = 1 si n = 0 1048790 Definicioacuten base

b) n = n (n ndash 1) si n gt 0 1048790 Definicioacuten recursiva

Dependiendo del problema que implemente elmoacutedulo eacuteste diagrama se puede vermodificado

Por ejemplo si tiene maacutes de una definicioacutenbase si tiene maacutes de una definicioacuten recursiva osi en la solucioacuten recursiva tiene que realizaralguna operacioacuten antes de volverse a ejecutar ono

1o Hace que la funcioacuten tome el valor de lo que se estaacute regresando En factorial si n == 0 factorial = 1 sino factorial= n factorial(n ndash 1)

2o Termina la ejecucioacuten de la funcioacuten regresando el control de la ejecucioacuten al moacutedulo en que fue llamada (a la instruccioacuten que se debe ejecutar despueacutes de que la funcioacuten fue llamada)

La solucioacuten recursiva de un problema se obtiene respondiendo dos preguntas iquestcoacutemo se resuelve el caso maacutes pequentildeo y iquestcoacutemo se resuelve un caso general sabiendo que ya se tiene el caso anterior maacutes pequentildeo

Para implementar soluciones recursivas se utilizan los moacutedulos las funciones (int float double etc)

El return de una funcioacuten realiza dos operaciones asigna a la funcioacuten el valor que regresa y termina la ejecucioacuten de la misma regresando el control a la siguiente instruccioacuten que se tiene que realizar despueacutes de la llamada a la funcioacuten

public static void imprimeNaturales(int n)

if (n == 1) Systemoutprintln(ldquo1rdquo) else Systemoutprintln(n) imprimeNaturales(n ndash 1) _________________________________ 2 public static void main(String args[]) hellip imprimeNaturales(5) Systemoutprintln(ldquoFin del procesordquo)

______ 1

Considerar un ejemplo maacutes la serie de los nuacutemeros de Fibonacci cuya definicioacuten ya se nos da de manera recursiva Vamos a escribir su implementacioacuten y posteriormente haremos la representacioacuten de la pila F0 = 1

F1 = 1

Fn = Fn -1 + Fn ndash 2 si n gt 1

Para simplificar el coacutedigo

Cuando la estructura de datos es recursiva ejemplo aacuterboles

Cuando los meacutetodos usen arreglos largos

Cuando el meacutetodo cambia de manera impredecible de campos

Cuando las iteraciones sean la mejor opcioacuten

25

iquestCuaacutendo no usar recursividad

Cuando un procedimiento incluye unallamada a siacute mismo se conoce comorecursioacuten directa

26

Cuando un procedimiento llama a otroprocedimiento y eacuteste causa que elprocedimiento original sea invocado se conocecomo recursioacuten indirecta

NOTA Cuando un procedimiento recursivo se llama recursivamentea si mismo varias veces para cada llamada se crean copiasindependientes de las variables declaradas en el procedimiento

27

Dependiendo del problema que implemente elmoacutedulo eacuteste diagrama se puede vermodificado

Por ejemplo si tiene maacutes de una definicioacutenbase si tiene maacutes de una definicioacuten recursiva osi en la solucioacuten recursiva tiene que realizaralguna operacioacuten antes de volverse a ejecutar ono

1o Hace que la funcioacuten tome el valor de lo que se estaacute regresando En factorial si n == 0 factorial = 1 sino factorial= n factorial(n ndash 1)

2o Termina la ejecucioacuten de la funcioacuten regresando el control de la ejecucioacuten al moacutedulo en que fue llamada (a la instruccioacuten que se debe ejecutar despueacutes de que la funcioacuten fue llamada)

La solucioacuten recursiva de un problema se obtiene respondiendo dos preguntas iquestcoacutemo se resuelve el caso maacutes pequentildeo y iquestcoacutemo se resuelve un caso general sabiendo que ya se tiene el caso anterior maacutes pequentildeo

Para implementar soluciones recursivas se utilizan los moacutedulos las funciones (int float double etc)

El return de una funcioacuten realiza dos operaciones asigna a la funcioacuten el valor que regresa y termina la ejecucioacuten de la misma regresando el control a la siguiente instruccioacuten que se tiene que realizar despueacutes de la llamada a la funcioacuten

public static void imprimeNaturales(int n)

if (n == 1) Systemoutprintln(ldquo1rdquo) else Systemoutprintln(n) imprimeNaturales(n ndash 1) _________________________________ 2 public static void main(String args[]) hellip imprimeNaturales(5) Systemoutprintln(ldquoFin del procesordquo)

______ 1

Considerar un ejemplo maacutes la serie de los nuacutemeros de Fibonacci cuya definicioacuten ya se nos da de manera recursiva Vamos a escribir su implementacioacuten y posteriormente haremos la representacioacuten de la pila F0 = 1

F1 = 1

Fn = Fn -1 + Fn ndash 2 si n gt 1

Para simplificar el coacutedigo

Cuando la estructura de datos es recursiva ejemplo aacuterboles

Cuando los meacutetodos usen arreglos largos

Cuando el meacutetodo cambia de manera impredecible de campos

Cuando las iteraciones sean la mejor opcioacuten

25

iquestCuaacutendo no usar recursividad

Cuando un procedimiento incluye unallamada a siacute mismo se conoce comorecursioacuten directa

26

Cuando un procedimiento llama a otroprocedimiento y eacuteste causa que elprocedimiento original sea invocado se conocecomo recursioacuten indirecta

NOTA Cuando un procedimiento recursivo se llama recursivamentea si mismo varias veces para cada llamada se crean copiasindependientes de las variables declaradas en el procedimiento

27

1o Hace que la funcioacuten tome el valor de lo que se estaacute regresando En factorial si n == 0 factorial = 1 sino factorial= n factorial(n ndash 1)

2o Termina la ejecucioacuten de la funcioacuten regresando el control de la ejecucioacuten al moacutedulo en que fue llamada (a la instruccioacuten que se debe ejecutar despueacutes de que la funcioacuten fue llamada)

La solucioacuten recursiva de un problema se obtiene respondiendo dos preguntas iquestcoacutemo se resuelve el caso maacutes pequentildeo y iquestcoacutemo se resuelve un caso general sabiendo que ya se tiene el caso anterior maacutes pequentildeo

Para implementar soluciones recursivas se utilizan los moacutedulos las funciones (int float double etc)

El return de una funcioacuten realiza dos operaciones asigna a la funcioacuten el valor que regresa y termina la ejecucioacuten de la misma regresando el control a la siguiente instruccioacuten que se tiene que realizar despueacutes de la llamada a la funcioacuten

public static void imprimeNaturales(int n)

if (n == 1) Systemoutprintln(ldquo1rdquo) else Systemoutprintln(n) imprimeNaturales(n ndash 1) _________________________________ 2 public static void main(String args[]) hellip imprimeNaturales(5) Systemoutprintln(ldquoFin del procesordquo)

______ 1

Considerar un ejemplo maacutes la serie de los nuacutemeros de Fibonacci cuya definicioacuten ya se nos da de manera recursiva Vamos a escribir su implementacioacuten y posteriormente haremos la representacioacuten de la pila F0 = 1

F1 = 1

Fn = Fn -1 + Fn ndash 2 si n gt 1

Para simplificar el coacutedigo

Cuando la estructura de datos es recursiva ejemplo aacuterboles

Cuando los meacutetodos usen arreglos largos

Cuando el meacutetodo cambia de manera impredecible de campos

Cuando las iteraciones sean la mejor opcioacuten

25

iquestCuaacutendo no usar recursividad

Cuando un procedimiento incluye unallamada a siacute mismo se conoce comorecursioacuten directa

26

Cuando un procedimiento llama a otroprocedimiento y eacuteste causa que elprocedimiento original sea invocado se conocecomo recursioacuten indirecta

NOTA Cuando un procedimiento recursivo se llama recursivamentea si mismo varias veces para cada llamada se crean copiasindependientes de las variables declaradas en el procedimiento

27

2o Termina la ejecucioacuten de la funcioacuten regresando el control de la ejecucioacuten al moacutedulo en que fue llamada (a la instruccioacuten que se debe ejecutar despueacutes de que la funcioacuten fue llamada)

La solucioacuten recursiva de un problema se obtiene respondiendo dos preguntas iquestcoacutemo se resuelve el caso maacutes pequentildeo y iquestcoacutemo se resuelve un caso general sabiendo que ya se tiene el caso anterior maacutes pequentildeo

Para implementar soluciones recursivas se utilizan los moacutedulos las funciones (int float double etc)

El return de una funcioacuten realiza dos operaciones asigna a la funcioacuten el valor que regresa y termina la ejecucioacuten de la misma regresando el control a la siguiente instruccioacuten que se tiene que realizar despueacutes de la llamada a la funcioacuten

public static void imprimeNaturales(int n)

if (n == 1) Systemoutprintln(ldquo1rdquo) else Systemoutprintln(n) imprimeNaturales(n ndash 1) _________________________________ 2 public static void main(String args[]) hellip imprimeNaturales(5) Systemoutprintln(ldquoFin del procesordquo)

______ 1

Considerar un ejemplo maacutes la serie de los nuacutemeros de Fibonacci cuya definicioacuten ya se nos da de manera recursiva Vamos a escribir su implementacioacuten y posteriormente haremos la representacioacuten de la pila F0 = 1

F1 = 1

Fn = Fn -1 + Fn ndash 2 si n gt 1

Para simplificar el coacutedigo

Cuando la estructura de datos es recursiva ejemplo aacuterboles

Cuando los meacutetodos usen arreglos largos

Cuando el meacutetodo cambia de manera impredecible de campos

Cuando las iteraciones sean la mejor opcioacuten

25

iquestCuaacutendo no usar recursividad

Cuando un procedimiento incluye unallamada a siacute mismo se conoce comorecursioacuten directa

26

Cuando un procedimiento llama a otroprocedimiento y eacuteste causa que elprocedimiento original sea invocado se conocecomo recursioacuten indirecta

NOTA Cuando un procedimiento recursivo se llama recursivamentea si mismo varias veces para cada llamada se crean copiasindependientes de las variables declaradas en el procedimiento

27

La solucioacuten recursiva de un problema se obtiene respondiendo dos preguntas iquestcoacutemo se resuelve el caso maacutes pequentildeo y iquestcoacutemo se resuelve un caso general sabiendo que ya se tiene el caso anterior maacutes pequentildeo

Para implementar soluciones recursivas se utilizan los moacutedulos las funciones (int float double etc)

El return de una funcioacuten realiza dos operaciones asigna a la funcioacuten el valor que regresa y termina la ejecucioacuten de la misma regresando el control a la siguiente instruccioacuten que se tiene que realizar despueacutes de la llamada a la funcioacuten

public static void imprimeNaturales(int n)

if (n == 1) Systemoutprintln(ldquo1rdquo) else Systemoutprintln(n) imprimeNaturales(n ndash 1) _________________________________ 2 public static void main(String args[]) hellip imprimeNaturales(5) Systemoutprintln(ldquoFin del procesordquo)

______ 1

Considerar un ejemplo maacutes la serie de los nuacutemeros de Fibonacci cuya definicioacuten ya se nos da de manera recursiva Vamos a escribir su implementacioacuten y posteriormente haremos la representacioacuten de la pila F0 = 1

F1 = 1

Fn = Fn -1 + Fn ndash 2 si n gt 1

Para simplificar el coacutedigo

Cuando la estructura de datos es recursiva ejemplo aacuterboles

Cuando los meacutetodos usen arreglos largos

Cuando el meacutetodo cambia de manera impredecible de campos

Cuando las iteraciones sean la mejor opcioacuten

25

iquestCuaacutendo no usar recursividad

Cuando un procedimiento incluye unallamada a siacute mismo se conoce comorecursioacuten directa

26

Cuando un procedimiento llama a otroprocedimiento y eacuteste causa que elprocedimiento original sea invocado se conocecomo recursioacuten indirecta

NOTA Cuando un procedimiento recursivo se llama recursivamentea si mismo varias veces para cada llamada se crean copiasindependientes de las variables declaradas en el procedimiento

27

El return de una funcioacuten realiza dos operaciones asigna a la funcioacuten el valor que regresa y termina la ejecucioacuten de la misma regresando el control a la siguiente instruccioacuten que se tiene que realizar despueacutes de la llamada a la funcioacuten

public static void imprimeNaturales(int n)

if (n == 1) Systemoutprintln(ldquo1rdquo) else Systemoutprintln(n) imprimeNaturales(n ndash 1) _________________________________ 2 public static void main(String args[]) hellip imprimeNaturales(5) Systemoutprintln(ldquoFin del procesordquo)

______ 1

Considerar un ejemplo maacutes la serie de los nuacutemeros de Fibonacci cuya definicioacuten ya se nos da de manera recursiva Vamos a escribir su implementacioacuten y posteriormente haremos la representacioacuten de la pila F0 = 1

F1 = 1

Fn = Fn -1 + Fn ndash 2 si n gt 1

Para simplificar el coacutedigo

Cuando la estructura de datos es recursiva ejemplo aacuterboles

Cuando los meacutetodos usen arreglos largos

Cuando el meacutetodo cambia de manera impredecible de campos

Cuando las iteraciones sean la mejor opcioacuten

25

iquestCuaacutendo no usar recursividad

Cuando un procedimiento incluye unallamada a siacute mismo se conoce comorecursioacuten directa

26

Cuando un procedimiento llama a otroprocedimiento y eacuteste causa que elprocedimiento original sea invocado se conocecomo recursioacuten indirecta

NOTA Cuando un procedimiento recursivo se llama recursivamentea si mismo varias veces para cada llamada se crean copiasindependientes de las variables declaradas en el procedimiento

27

public static void imprimeNaturales(int n)

if (n == 1) Systemoutprintln(ldquo1rdquo) else Systemoutprintln(n) imprimeNaturales(n ndash 1) _________________________________ 2 public static void main(String args[]) hellip imprimeNaturales(5) Systemoutprintln(ldquoFin del procesordquo)

______ 1

Considerar un ejemplo maacutes la serie de los nuacutemeros de Fibonacci cuya definicioacuten ya se nos da de manera recursiva Vamos a escribir su implementacioacuten y posteriormente haremos la representacioacuten de la pila F0 = 1

F1 = 1

Fn = Fn -1 + Fn ndash 2 si n gt 1

Para simplificar el coacutedigo

Cuando la estructura de datos es recursiva ejemplo aacuterboles

Cuando los meacutetodos usen arreglos largos

Cuando el meacutetodo cambia de manera impredecible de campos

Cuando las iteraciones sean la mejor opcioacuten

25

iquestCuaacutendo no usar recursividad

Cuando un procedimiento incluye unallamada a siacute mismo se conoce comorecursioacuten directa

26

Cuando un procedimiento llama a otroprocedimiento y eacuteste causa que elprocedimiento original sea invocado se conocecomo recursioacuten indirecta

NOTA Cuando un procedimiento recursivo se llama recursivamentea si mismo varias veces para cada llamada se crean copiasindependientes de las variables declaradas en el procedimiento

27

Considerar un ejemplo maacutes la serie de los nuacutemeros de Fibonacci cuya definicioacuten ya se nos da de manera recursiva Vamos a escribir su implementacioacuten y posteriormente haremos la representacioacuten de la pila F0 = 1

F1 = 1

Fn = Fn -1 + Fn ndash 2 si n gt 1

Para simplificar el coacutedigo

Cuando la estructura de datos es recursiva ejemplo aacuterboles

Cuando los meacutetodos usen arreglos largos

Cuando el meacutetodo cambia de manera impredecible de campos

Cuando las iteraciones sean la mejor opcioacuten

25

iquestCuaacutendo no usar recursividad

Cuando un procedimiento incluye unallamada a siacute mismo se conoce comorecursioacuten directa

26

Cuando un procedimiento llama a otroprocedimiento y eacuteste causa que elprocedimiento original sea invocado se conocecomo recursioacuten indirecta

NOTA Cuando un procedimiento recursivo se llama recursivamentea si mismo varias veces para cada llamada se crean copiasindependientes de las variables declaradas en el procedimiento

27

Para simplificar el coacutedigo

Cuando la estructura de datos es recursiva ejemplo aacuterboles

Cuando los meacutetodos usen arreglos largos

Cuando el meacutetodo cambia de manera impredecible de campos

Cuando las iteraciones sean la mejor opcioacuten

25

iquestCuaacutendo no usar recursividad

Cuando un procedimiento incluye unallamada a siacute mismo se conoce comorecursioacuten directa

26

Cuando un procedimiento llama a otroprocedimiento y eacuteste causa que elprocedimiento original sea invocado se conocecomo recursioacuten indirecta

NOTA Cuando un procedimiento recursivo se llama recursivamentea si mismo varias veces para cada llamada se crean copiasindependientes de las variables declaradas en el procedimiento

27

Cuando un procedimiento incluye unallamada a siacute mismo se conoce comorecursioacuten directa

26

Cuando un procedimiento llama a otroprocedimiento y eacuteste causa que elprocedimiento original sea invocado se conocecomo recursioacuten indirecta

NOTA Cuando un procedimiento recursivo se llama recursivamentea si mismo varias veces para cada llamada se crean copiasindependientes de las variables declaradas en el procedimiento

27

Cuando un procedimiento llama a otroprocedimiento y eacuteste causa que elprocedimiento original sea invocado se conocecomo recursioacuten indirecta

NOTA Cuando un procedimiento recursivo se llama recursivamentea si mismo varias veces para cada llamada se crean copiasindependientes de las variables declaradas en el procedimiento

27

top related