recursividad 100329105433-phpapp01

27
Eldon Centella Ribera

Upload: eldoncent

Post on 04-Jul-2015

400 views

Category:

Education


2 download

DESCRIPTION

Recursividad en java

TRANSCRIPT

Page 1: Recursividad 100329105433-phpapp01

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

Page 2: Recursividad 100329105433-phpapp01

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

Page 3: Recursividad 100329105433-phpapp01

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

Page 4: Recursividad 100329105433-phpapp01

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

Page 5: Recursividad 100329105433-phpapp01

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

Page 6: Recursividad 100329105433-phpapp01

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

Page 7: Recursividad 100329105433-phpapp01

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

Page 8: Recursividad 100329105433-phpapp01

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

Page 9: Recursividad 100329105433-phpapp01

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

Page 10: Recursividad 100329105433-phpapp01

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

Page 11: Recursividad 100329105433-phpapp01

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

Page 12: Recursividad 100329105433-phpapp01

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

Page 13: Recursividad 100329105433-phpapp01

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

Page 14: Recursividad 100329105433-phpapp01

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

Page 15: Recursividad 100329105433-phpapp01

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

Page 16: Recursividad 100329105433-phpapp01

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

Page 17: Recursividad 100329105433-phpapp01

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

Page 18: Recursividad 100329105433-phpapp01

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

Page 19: Recursividad 100329105433-phpapp01

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

Page 20: Recursividad 100329105433-phpapp01

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

Page 21: Recursividad 100329105433-phpapp01

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