recursividad 100329105433-phpapp01
DESCRIPTION
Recursividad en javaTRANSCRIPT
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