<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://www.ecured.cu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Abel0202adJc</id>
	<title>EcuRed - Contribuciones del colaborador [es]</title>
	<link rel="self" type="application/atom+xml" href="https://www.ecured.cu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Abel0202adJc"/>
	<link rel="alternate" type="text/html" href="https://www.ecured.cu/Especial:Contribuciones/Abel0202adJc"/>
	<updated>2026-04-17T19:53:35Z</updated>
	<subtitle>Contribuciones del colaborador</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Archivo:Pppso.png&amp;diff=466511</id>
		<title>Archivo:Pppso.png</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Archivo:Pppso.png&amp;diff=466511"/>
		<updated>2011-03-30T16:52:40Z</updated>

		<summary type="html">&lt;p&gt;Abel0202adJc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sumario ==&lt;br /&gt;
&lt;br /&gt;
== Estado de copyright: ==&lt;br /&gt;
&lt;br /&gt;
== Fuente: ==&lt;/div&gt;</summary>
		<author><name>Abel0202adJc</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Planificaci%C3%B3n_de_procesos_en_un_sistema_operativo&amp;diff=466495</id>
		<title>Planificación de procesos en un sistema operativo</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Planificaci%C3%B3n_de_procesos_en_un_sistema_operativo&amp;diff=466495"/>
		<updated>2011-03-30T16:50:57Z</updated>

		<summary type="html">&lt;p&gt;Abel0202adJc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''{{Definición|Nombre=Planificación de procesos en Sistemas Operativos|imagen=Pppso.png}}'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;justify&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la actualidad podemos realizar varias acciones de forma simultánea mediante el uso de las computadoras. Para la ejecución de estas tareas el [[procesador]] debe alternar entre una y otra, pero es importante conocer que en cada instante de tiempo se puede estar ejecutando un solo programa. Un programa que se encuentra en ejecución recibe el nombre de proceso.&lt;br /&gt;
&lt;br /&gt;
==Procesos==&lt;br /&gt;
Un proceso es un programa en ejecución. Existen 3 estados en los que puede encontrarse un proceso, estos son: Listo, Bloqueado y En ejecución. Para el control de los mismos internamente son almacenados en una lista, cada uno de  los nodos guarda información de un proceso. En esa información se almacena, entre otros aspectos, el estado en que se encuentra el proceso, el tiempo que el proceso ha usado el CPU, e información de E/S (entrada/salida).&lt;br /&gt;
Los [[sistemas operativos]] cuentan con un componente llamado planificador, que se encarga de decidir cuál de los procesos hará uso del procesador. La toma de esta decisión, así como el tiempo de ejecución del proceso, estará dada por un [[algoritmo]], denominado Algoritmo de Planificación. &lt;br /&gt;
&lt;br /&gt;
==Objetivos de la Planificación de procesos==&lt;br /&gt;
La Planificación de procesos tiene como principales objetivos la '''equidad''', la '''eficacia''', el '''tiempo de respuesta''', el '''tiempo de regreso''' y el '''rendimiento'''.&lt;br /&gt;
*'''Equidad''': Todos los procesos deben ser atendidos.&lt;br /&gt;
*'''Eficacia''': El procesador debe estar ocupado el 100% del tiempo.&lt;br /&gt;
*'''Tiempo de respuesta''': El tiempo empleado en dar respuesta a las solicitudes del usuario debe ser el menor posible.&lt;br /&gt;
*'''Tiempo de regreso''': Reducir al mínimo el tiempo de espera de los resultados esperados por los usuarios por lotes.&lt;br /&gt;
*'''Rendimiento''': Maximizar el número de tareas que se procesan por cada hora.&lt;br /&gt;
&lt;br /&gt;
==Algoritmos de Planificación==&lt;br /&gt;
===Primero en llegar primero en ser servido===&lt;br /&gt;
Conocido como FCFS  (First Come First Served). Este algoritmo emplea una cola de procesos, asignando un lugar a cada proceso por el orden de llegada. Cuando el proceso llega es puesto en su lugar en la cola después del que llegó antes que él y se pone en estado de listo. Cuando un proceso comienza a ejecutarse no se interrumpe su ejecución hasta que termina de hacerlo. &lt;br /&gt;
&lt;br /&gt;
===Prioridad al más corto===&lt;br /&gt;
Su nombre es SJF (Shortest Job First). El proceso que se encuentra en ejecución cambiará de estado voluntariamente, o sea, no tendrá un tiempo de ejecución determinado para el proceso. A cada proceso se le asigna el tiempo que usará cuando vuelva a estar en ejecución, y se irá ejecutando el que tenga un menor tiempo asignado. Si se da el caso de que dos procesos tengan igual valor en ese aspecto emplea el algoritmo FCFS. &lt;br /&gt;
&lt;br /&gt;
===Round Robin===&lt;br /&gt;
A cada proceso se le asigna un tiempo determinado para su ejecución, el mismo tiempo para todos. En caso de que un proceso no pueda ser ejecutado completamente en ese tiempo se continuará su ejecución después de que todos los procesos restantes sean ejecutados durante el tiempo establecido. Este es un algoritmo basado en FCFS que trata la cola de procesos que se encuentran en estado de listos como una cola circular.&lt;br /&gt;
&lt;br /&gt;
===Planificación por prioridad===&lt;br /&gt;
En este tipo de planificación a cada proceso se le asigna una prioridad siguiendo un criterio determinado, y de acuerdo con esa prioridad será el orden en que se atienda cada proceso.&lt;br /&gt;
&lt;br /&gt;
===Planificación garantizada===&lt;br /&gt;
Para realizar esta planificación el sistema tiene en cuenta el número de usuarios que deben ser atendidos. Para un número ''n'' de usuarios se asignará a cada uno un tiempo de ejecución igual a 1/n. &lt;br /&gt;
&lt;br /&gt;
===Planificación de Colas Múltiples===&lt;br /&gt;
El nombre se deriva de MQS (Multilevel Queue Schedulling). En este algoritmo la cola de procesos que se encuentran en estado de listos es dividida en un número determinado de colas más pequeñas. Los procesos son clasificados mediante un criterio para determinar en qué cola será colocado cada uno cuando quede en estado de listo. Cada cola puede manejar un algoritmo de planificación diferente a las demás.&lt;br /&gt;
&lt;br /&gt;
==Ejemplo==&lt;br /&gt;
La tabla brinda información de 5 procesos ( A, B, C, D y E ). De estos se reflejan el instante de llegada, el tiempo que duran sus ráfagas (expresado en milisegundos) y el tiempo de entrada/salida.&lt;br /&gt;
[[Imagen:Talgpp.png|thumb|center|]]&lt;br /&gt;
A partir de dicha información se tiene en la figura una comparación de cómo se ejecutarían estos procesos mediante los algoritmos de planificación FCFS y SJF.&lt;br /&gt;
[[Imagen:Ialgs.png|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
==Tiempos==&lt;br /&gt;
En la Planificación de procesos se tiene en cuenta diferentes tiempos que pueden ser calculados, como son el ''Tiempo de espera medio'', el ''Tiempo de retorno del proceso'' y el ''Tiempo de retorno medio''.&lt;br /&gt;
=== Tiempo de espera medio===&lt;br /&gt;
Es el promedio de tiempos en que los procesos están en estado de listos.&lt;br /&gt;
En algoritmos FCFS este tiempo suele ser bastante largo.&lt;br /&gt;
En algoritmos SJF para los procesos largos este tiempo suele ser muy grande, pues se estarán ejecutando constantemente los procesos más cortos y los más largos se encontrarán constantemente en espera, por lo que pueden entrar en inanición.&lt;br /&gt;
En Planificación por prioridad los procesos de prioridad baja podrían no ejecutarse nunca. Para dar solución a este problema el envejecimiento de un programa eleva su prioridad.&lt;br /&gt;
&lt;br /&gt;
===Tiempo de retorno del proceso===&lt;br /&gt;
Es el tiempo que transcurre desde la creación de un proceso hasta que termina la ejecución del programa que le dio lugar.&lt;br /&gt;
&lt;br /&gt;
===Tiempo de retorno medio===&lt;br /&gt;
Es la suma de los tiempos de retorno de cada uno de los procesos dividida entre la cantidad de procesos. &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fuentes==&lt;br /&gt;
http://www.monografias.com/trabajos14/administ-procesos/administ-procesos.shtml&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/First-come,_first-served&lt;br /&gt;
&lt;br /&gt;
http://wwwdi.ujaen.es/~lina/TemasSO/PLANIFICACIONDEPROCESOS/6AlgoritmosdePlanificacionI.htm&lt;br /&gt;
&lt;br /&gt;
[[Category:Sistemas_Operativos]]&lt;/div&gt;</summary>
		<author><name>Abel0202adJc</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Planificaci%C3%B3n_de_procesos_en_un_sistema_operativo&amp;diff=459656</id>
		<title>Planificación de procesos en un sistema operativo</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Planificaci%C3%B3n_de_procesos_en_un_sistema_operativo&amp;diff=459656"/>
		<updated>2011-03-28T21:48:18Z</updated>

		<summary type="html">&lt;p&gt;Abel0202adJc: Página creada con ''''{{Definición|Nombre=Planificación de procesos en Sistemas Operativos }}'''&amp;lt;br&amp;gt;  &amp;lt;div align=&amp;quot;justify&amp;quot;&amp;gt;   En la actualidad podemos realizar varias acciones de forma simultán...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''{{Definición|Nombre=Planificación de procesos en Sistemas Operativos }}'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;justify&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la actualidad podemos realizar varias acciones de forma simultánea mediante el uso de las computadoras. Para la ejecución de estas tareas el procesador debe alternar entre una y otra, pero es importante conocer que en cada instante de tiempo se puede estar ejecutando un solo programa. Un programa que se encuentra en ejecución recibe el nombre de proceso.&lt;br /&gt;
&lt;br /&gt;
==Procesos==&lt;br /&gt;
Un proceso es un programa en ejecución. Existen 3 estados en los que puede encontrarse un proceso, estos son: Listo, Bloqueado y En ejecución. Para el control de los mismos internamente son almacenados en una lista, cada uno de  los nodos guarda información de un proceso. En esa información se almacena, entre otros aspectos, el estado en que se encuentra el proceso, el tiempo que el proceso ha usado el CPU, e información de E/S (entrada/salida).&lt;br /&gt;
Los sistemas operativos cuentan con un componente llamado Planificador, que se encarga de decidir cuál de los procesos hará uso del procesador. La toma de esta decisión, así como el tiempo de ejecución del proceso, estará dada por un algoritmo, denominado Algoritmo de Planificación. &lt;br /&gt;
&lt;br /&gt;
==Objetivos de la Planificación de procesos==&lt;br /&gt;
La Planificación de procesos tiene como principales objetivos la '''equidad''', la '''eficacia''', el '''tiempo de respuesta''', el '''tiempo de regreso''' y el '''rendimiento'''.&lt;br /&gt;
*'''Equidad''': Todos los procesos deben ser atendidos.&lt;br /&gt;
*'''Eficacia''': El procesador debe estar ocupado el 100% del tiempo.&lt;br /&gt;
*'''Tiempo de respuesta''': El tiempo empleado en dar respuesta a las solicitudes del usuario debe ser el menor posible.&lt;br /&gt;
*'''Tiempo de regreso''': Reducir al mínimo el tiempo de espera de los resultados esperados por los usuarios por lotes.&lt;br /&gt;
*'''Rendimiento''': Maximizar el número de tareas que se procesan por cada hora.&lt;br /&gt;
&lt;br /&gt;
==Algoritmos de Planificación==&lt;br /&gt;
===Primero en llegar primero en ser servido===&lt;br /&gt;
Conocido como FCFS  (First Come First Served). Este algoritmo emplea una cola de procesos, asignando un lugar a cada proceso por el orden de llegada. Cuando el proceso llega es puesto en su lugar en la cola después del que llegó antes que él y se pone en estado de listo. Cuando un proceso comienza a ejecutarse no se interrumpe su ejecución hasta que termina de hacerlo. &lt;br /&gt;
&lt;br /&gt;
===Prioridad al más corto===&lt;br /&gt;
Su nombre es SJF (Shortest Job First). El proceso que se encuentra en ejecución cambiará de estado voluntariamente, o sea, no tendrá un tiempo de ejecución determinado para el proceso. A cada proceso se le asigna el tiempo que usará cuando vuelva a estar en ejecución, y se irá ejecutando el que tenga un menor tiempo asignado. Si se da el caso de que dos procesos tengan igual valor en ese aspecto emplea el algoritmo FCFS. &lt;br /&gt;
&lt;br /&gt;
===Round Robin===&lt;br /&gt;
A cada proceso se le asigna un tiempo determinado para su ejecución, el mismo tiempo para todos. En caso de que un proceso no pueda ser ejecutado completamente en ese tiempo se continuará su ejecución después de que todos los procesos restantes sean ejecutados durante el tiempo establecido. Este es un algoritmo basado en FCFS que trata la cola de procesos que se encuentran en estado de listos como una cola circular.&lt;br /&gt;
&lt;br /&gt;
===Planificación por prioridad===&lt;br /&gt;
En este tipo de planificación a cada proceso se le asigna una prioridad siguiendo un criterio determinado, y de acuerdo con esa prioridad será el orden en que se atienda cada proceso.&lt;br /&gt;
&lt;br /&gt;
===Planificación garantizada===&lt;br /&gt;
Para realizar esta planificación el sistema tiene en cuenta el número de usuarios que deben ser atendidos. Para un número ''n'' de usuarios se asignará a cada uno un tiempo de ejecución igual a 1/n. &lt;br /&gt;
&lt;br /&gt;
===Planificación de Colas Múltiples===&lt;br /&gt;
El nombre se deriva de MQS (Multilevel Queue Schedulling). En este algoritmo la cola de procesos que se encuentran en estado de listos es dividida en un número determinado de colas más pequeñas. Los procesos son clasificados mediante un criterio para determinar en qué cola será colocado cada uno cuando quede en estado de listo. Cada cola puede manejar un algoritmo de planificación diferente a las demás.&lt;br /&gt;
&lt;br /&gt;
==Tiempos==&lt;br /&gt;
En la Planificación de procesos se tiene en cuenta diferentes tiempos que pueden ser calculados, como son el ''Tiempo de espera medio'', el ''Tiempo de retorno del proceso'' y el ''Tiempo de retorno medio''.&lt;br /&gt;
=== Tiempo de espera medio===&lt;br /&gt;
Es el promedio de tiempos en que los procesos están en estado de listos.&lt;br /&gt;
En algoritmos FCFS este tiempo suele ser bastante largo.&lt;br /&gt;
En algoritmos SJF para los procesos largos este tiempo suele ser muy grande, pues se estarán ejecutando constantemente los procesos más cortos y los más largos se encontrarán constantemente en espera, por lo que pueden entrar en inanición.&lt;br /&gt;
En Planificación por prioridad los procesos de prioridad baja podrían no ejecutarse nunca. Para dar solución a este problema el envejecimiento de un programa eleva su prioridad.&lt;br /&gt;
&lt;br /&gt;
===Tiempo de retorno del proceso===&lt;br /&gt;
Es el tiempo que transcurre desde la creación de un proceso hasta que termina la ejecución del programa que le dio lugar.&lt;br /&gt;
&lt;br /&gt;
===Tiempo de retorno medio===&lt;br /&gt;
Es la suma de los tiempos de retorno de cada uno de los procesos dividida entre la cantidad de procesos. &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fuentes==&lt;br /&gt;
http://www.monografias.com/trabajos14/administ-procesos/administ-procesos.shtml&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/First-come,_first-served&lt;br /&gt;
&lt;br /&gt;
http://wwwdi.ujaen.es/~lina/TemasSO/PLANIFICACIONDEPROCESOS/6AlgoritmosdePlanificacionI.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Sistemas_Operativos]]&lt;/div&gt;</summary>
		<author><name>Abel0202adJc</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Recursividad&amp;diff=447546</id>
		<title>Recursividad</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Recursividad&amp;diff=447546"/>
		<updated>2011-03-24T18:13:24Z</updated>

		<summary type="html">&lt;p&gt;Abel0202adJc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''{{Definición|Nombre=Recursividad|imagen=recu.jpg}}'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;justify&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En el área de la [[programación]] de aplicaciones los programadores pueden enfrentarse a problemas de cualquier complejidad y buscar la solución más eficiente para cada uno de ellos. Algunos de estos problemas, siempre y cuando puedan ser definidos en función de su tamaño, es decir, si es posible llegar a su solución a través de una secuencia finita de pasos, pueden ser resueltos mediante la división del problema en subproblemas más pequeños y repitiendo esta acción para cada uno de los subproblemas que van surgiendo hasta llegar a problemas cuya solución es conocida o fácil de encontrar. &lt;br /&gt;
&lt;br /&gt;
==Definición==&lt;br /&gt;
La [[recursividad]], también llamada recursión o recurrencia, es la forma en la cual se especifica un proceso basado en su propia definición. O sea, si se tiene un problema de tamaño N, este puede ser dividido en instancias más pequeñas que N del mismo problema y conociendo la solución de las instancias más simples, se puede aplicar inducción a partir de estas asumiendo que quedan resueltas. &lt;br /&gt;
&lt;br /&gt;
==Condiciones necesarias==&lt;br /&gt;
Para dar solución a un problema a partir del empleo de la recursividad, es necesario asegurar que cada llamada recursiva debe estar definida sobre un problema menos complejo que el que dio lugar a la llamada, y que debe existir al menos un caso base al que se garantice la llegada del problema en un momento determinado. Si no se cumpliera esta condición se generaría una secuencia infinita de llamadas y el algoritmo que intenta dar solución al problema no terminaría nunca.&lt;br /&gt;
&lt;br /&gt;
==Ejemplos de recursividad==&lt;br /&gt;
Las siglas que identifican al proyecto [[GNU]], creado por [[Richard Stallman]] son un ejemplo de recursividad, ya que su significado es GNU is not Unix, (en español GNU no es Unix), donde la G realizaría una nueva llamada a la sigla.&lt;br /&gt;
En la programación existen problemas conocidos que se pueden resolver empleando la recursividad, como son la Sucesión de Fibonacci, el problema de las 8 reinas, así como el cálculo del factorial y la potencia de un número.&lt;br /&gt;
&lt;br /&gt;
==Problemas resueltos de forma recursiva==&lt;br /&gt;
===Producto de dos números===&lt;br /&gt;
Un ejemplo de solución a un problema de forma recursiva sería calcular el producto de dos números de forma recurrente sin emplear el operador de multiplicación. Tomaremos como ejemplo la multiplicación de 3 y 4. Como caso base se conoce que el resultado de multiplicar cualquier número por 1 será el mismo número. &lt;br /&gt;
&lt;br /&gt;
3 * 4 se puede descomponer en 3 + 3 * 3&lt;br /&gt;
Del mismo modo 3 * 3 se puede descomponer en 3 + 3 * 2&lt;br /&gt;
Y así sucesivamente&lt;br /&gt;
La figura muestra la secuencia de pasos completa que da solución al problema.&lt;br /&gt;
[[Imagen:multrec.jpg|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
===Torres de Hanoi===&lt;br /&gt;
Otro ejemplo es el problema de las Torres de Hanoi. El problema es el siguiente:&lt;br /&gt;
Se tiene tres postes: A, B y C. En el poste A se coloca una cantidad determinada de discos de diámetro diferente,  de modo que un disco de diámetro menor siempre queda sobre uno de diámetro mayor. El objetivo es mover los discos al poste C usando el poste B como auxiliar. Sólo puede moverse el disco superior de cualquier poste a otro poste, y un disco mayor no puede estar en ningún momento sobre uno menor. &lt;br /&gt;
&lt;br /&gt;
Como se puede observar este problema no está planteado en términos recursivos, sin embargo se puede buscar una forma recursiva de dar solución al mismo.&lt;br /&gt;
&lt;br /&gt;
La solución al problema de mover los n discos puede existir a partir de encontrar la solución al movimiento de n – 1 discos, pues al restar sucesivamente n – 1 llegaremos al caso base, mover un disco, cuya solución sería realizar el movimiento del disco de la torre A a la C, como se observa en la figura.&lt;br /&gt;
[[Imagen:Hanoi_um.png|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
Si se deseara mover dos discos desde la posición inicial a la final los movimientos serían los que se muestran en la imagen.&lt;br /&gt;
[[Imagen:Hanoi_dm.png|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
Conociendo la solución para el movimiento de dos discos, es posible buscar la solución para tres. De la misma forma en que se realizó el movimiento de dos discos desde A hasta C utilizando B como auxiliar, podemos desplazar estos dos discos de C hacia B empleando como auxiliar a A. &lt;br /&gt;
[[Imagen:Hanoi_tm.png|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
En este punto tendríamos los dos discos de menor tamaño en B y el mayor en A, el siguiente paso sería mover un disco de A a C como se hizo en el caso base y a continuación mover los discos restantes de B a C usando la torre A como auxiliar.&lt;br /&gt;
&lt;br /&gt;
Siguiendo estas reglas, se puede hallar la solución al problema de n discos, conociendo la solución para n – 1. &lt;br /&gt;
&lt;br /&gt;
En términos generales, la solución sería la siguiente:&lt;br /&gt;
&lt;br /&gt;
   - Si n es 1 mover el disco de A a C y terminar.&lt;br /&gt;
   - Si n es mayor que 1 entonces:&lt;br /&gt;
   - Mover el disco superior desde A hasta B n – 1 veces utilizando C como auxiliar.&lt;br /&gt;
   - Mover el disco restante desde A hasta C.&lt;br /&gt;
   - Mover los n – 1 discos desde B hasta C empleando A como auxiliar.&lt;br /&gt;
&lt;br /&gt;
Como se ha podido comprobar, la recursividad es una técnica que puede ayudar a encontrar soluciones a problemas cuya solución de manera iterativa resulta bastante engorrosa. El estudio de la misma resulta de gran ayuda para los programadores a la hora de dar respuesta a diversos problemas. &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fuentes==&lt;br /&gt;
&lt;br /&gt;
http://es.wikipedia.org/wiki/Algoritmo_recursivo&lt;br /&gt;
&lt;br /&gt;
http://es.wikipedia.org/wiki/Recursi%C3%B3n&lt;br /&gt;
&lt;br /&gt;
Chávez Agüero, Abel   Ing. Ciencias Informáticas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Abel0202adJc</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Recursividad&amp;diff=447534</id>
		<title>Recursividad</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Recursividad&amp;diff=447534"/>
		<updated>2011-03-24T18:11:52Z</updated>

		<summary type="html">&lt;p&gt;Abel0202adJc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''{{Definición|Nombre=Recursividad|imagen=recu.jpg}}'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;justify&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En el área de la [[programación]] de aplicaciones los programadores pueden enfrentarse a problemas de cualquier complejidad y buscar la solución más eficiente para cada uno de ellos. Algunos de estos problemas, siempre y cuando puedan ser definidos en función de su tamaño, es decir, si es posible llegar a su solución a través de una secuencia finita de pasos, pueden ser resueltos mediante la división del problema en subproblemas más pequeños y repitiendo esta acción para cada uno de los subproblemas que van surgiendo hasta llegar a problemas cuya solución es conocida o fácil de encontrar. &lt;br /&gt;
&lt;br /&gt;
==Definición==&lt;br /&gt;
La [[recursividad]], también llamada recursión o recurrencia, es la forma en la cual se especifica un proceso basado en su propia definición. O sea, si se tiene un problema de tamaño N, este puede ser dividido en instancias más pequeñas que N del mismo problema y conociendo la solución de las instancias más simples, se puede aplicar [[inducción]] a partir de estas asumiendo que quedan resueltas. &lt;br /&gt;
&lt;br /&gt;
==Condiciones necesarias==&lt;br /&gt;
Para dar solución a un problema a partir del empleo de la recursividad, es necesario asegurar que cada llamada recursiva debe estar definida sobre un problema menos complejo que el que dio lugar a la llamada, y que debe existir al menos un caso base al que se garantice la llegada del problema en un momento determinado. Si no se cumpliera esta condición se generaría una secuencia infinita de llamadas y el algoritmo que intenta dar solución al problema no terminaría nunca.&lt;br /&gt;
&lt;br /&gt;
==Ejemplos de recursividad==&lt;br /&gt;
Las siglas que identifican al proyecto [[GNU]], creado por [[Richard Stallman]] son un ejemplo de recursividad, ya que su significado es GNU is not Unix, (en español GNU no es Unix), donde la G realizaría una nueva llamada a la sigla.&lt;br /&gt;
En la programación existen problemas conocidos que se pueden resolver empleando la recursividad, como son la Sucesión de Fibonacci, el problema de las 8 reinas, así como el cálculo del factorial y la potencia de un número.&lt;br /&gt;
&lt;br /&gt;
==Problemas resueltos de forma recursiva==&lt;br /&gt;
===Producto de dos números===&lt;br /&gt;
Un ejemplo de solución a un problema de forma recursiva sería calcular el producto de dos números de forma recurrente sin emplear el operador de multiplicación. Tomaremos como ejemplo la multiplicación de 3 y 4. Como caso base se conoce que el resultado de multiplicar cualquier número por 1 será el mismo número. &lt;br /&gt;
&lt;br /&gt;
3 * 4 se puede descomponer en 3 + 3 * 3&lt;br /&gt;
Del mismo modo 3 * 3 se puede descomponer en 3 + 3 * 2&lt;br /&gt;
Y así sucesivamente&lt;br /&gt;
La figura muestra la secuencia de pasos completa que da solución al problema.&lt;br /&gt;
[[Imagen:multrec.jpg|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
===Torres de Hanoi===&lt;br /&gt;
Otro ejemplo es el problema de las Torres de Hanoi. El problema es el siguiente:&lt;br /&gt;
Se tiene tres postes: A, B y C. En el poste A se coloca una cantidad determinada de discos de diámetro diferente,  de modo que un disco de diámetro menor siempre queda sobre uno de diámetro mayor. El objetivo es mover los discos al poste C usando el poste B como auxiliar. Sólo puede moverse el disco superior de cualquier poste a otro poste, y un disco mayor no puede estar en ningún momento sobre uno menor. &lt;br /&gt;
&lt;br /&gt;
Como se puede observar este problema no está planteado en términos recursivos, sin embargo se puede buscar una forma recursiva de dar solución al mismo.&lt;br /&gt;
&lt;br /&gt;
La solución al problema de mover los n discos puede existir a partir de encontrar la solución al movimiento de n – 1 discos, pues al restar sucesivamente n – 1 llegaremos al caso base, mover un disco, cuya solución sería realizar el movimiento del disco de la torre A a la C, como se observa en la figura.&lt;br /&gt;
[[Imagen:Hanoi_um.png|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
Si se deseara mover dos discos desde la posición inicial a la final los movimientos serían los que se muestran en la imagen.&lt;br /&gt;
[[Imagen:Hanoi_dm.png|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
Conociendo la solución para el movimiento de dos discos, es posible buscar la solución para tres. De la misma forma en que se realizó el movimiento de dos discos desde A hasta C utilizando B como auxiliar, podemos desplazar estos dos discos de C hacia B empleando como auxiliar a A. &lt;br /&gt;
[[Imagen:Hanoi_tm.png|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
En este punto tendríamos los dos discos de menor tamaño en B y el mayor en A, el siguiente paso sería mover un disco de A a C como se hizo en el caso base y a continuación mover los discos restantes de B a C usando la torre A como auxiliar.&lt;br /&gt;
&lt;br /&gt;
Siguiendo estas reglas, se puede hallar la solución al problema de n discos, conociendo la solución para n – 1. &lt;br /&gt;
&lt;br /&gt;
En términos generales, la solución sería la siguiente:&lt;br /&gt;
&lt;br /&gt;
   - Si n es 1 mover el disco de A a C y terminar.&lt;br /&gt;
   - Si n es mayor que 1 entonces:&lt;br /&gt;
   - Mover el disco superior desde A hasta B n – 1 veces utilizando C como auxiliar.&lt;br /&gt;
   - Mover el disco restante desde A hasta C.&lt;br /&gt;
   - Mover los n – 1 discos desde B hasta C empleando A como auxiliar.&lt;br /&gt;
&lt;br /&gt;
Como se ha podido comprobar, la recursividad es una técnica que puede ayudar a encontrar soluciones a problemas cuya solución de manera iterativa resulta bastante engorrosa. El estudio de la misma resulta de gran ayuda para los programadores a la hora de dar respuesta a diversos problemas. &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fuentes==&lt;br /&gt;
&lt;br /&gt;
http://es.wikipedia.org/wiki/Algoritmo_recursivo&lt;br /&gt;
&lt;br /&gt;
http://es.wikipedia.org/wiki/Recursi%C3%B3n&lt;br /&gt;
&lt;br /&gt;
Chávez Agüero, Abel   Ing. Ciencias Informáticas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Abel0202adJc</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Archivo:Hanoi_tm.png&amp;diff=447491</id>
		<title>Archivo:Hanoi tm.png</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Archivo:Hanoi_tm.png&amp;diff=447491"/>
		<updated>2011-03-24T18:05:03Z</updated>

		<summary type="html">&lt;p&gt;Abel0202adJc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sumario ==&lt;br /&gt;
&lt;br /&gt;
== Estado de copyright: ==&lt;br /&gt;
&lt;br /&gt;
== Fuente: ==&lt;/div&gt;</summary>
		<author><name>Abel0202adJc</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Archivo:Hanoi_dm.png&amp;diff=447475</id>
		<title>Archivo:Hanoi dm.png</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Archivo:Hanoi_dm.png&amp;diff=447475"/>
		<updated>2011-03-24T18:03:27Z</updated>

		<summary type="html">&lt;p&gt;Abel0202adJc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sumario ==&lt;br /&gt;
&lt;br /&gt;
== Estado de copyright: ==&lt;br /&gt;
&lt;br /&gt;
== Fuente: ==&lt;/div&gt;</summary>
		<author><name>Abel0202adJc</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Archivo:Hanoi_um.png&amp;diff=447461</id>
		<title>Archivo:Hanoi um.png</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Archivo:Hanoi_um.png&amp;diff=447461"/>
		<updated>2011-03-24T18:01:25Z</updated>

		<summary type="html">&lt;p&gt;Abel0202adJc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sumario ==&lt;br /&gt;
&lt;br /&gt;
== Estado de copyright: ==&lt;br /&gt;
&lt;br /&gt;
== Fuente: ==&lt;/div&gt;</summary>
		<author><name>Abel0202adJc</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Recursividad&amp;diff=447452</id>
		<title>Recursividad</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Recursividad&amp;diff=447452"/>
		<updated>2011-03-24T17:59:59Z</updated>

		<summary type="html">&lt;p&gt;Abel0202adJc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''{{Definición|Nombre=Recursividad|imagen=recu.jpg}}'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;justify&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En el área de la [[programación]] de aplicaciones los programadores pueden enfrentarse a problemas de cualquier complejidad y buscar la solución más eficiente para cada uno de ellos. Algunos de estos problemas, siempre y cuando puedan ser definidos en función de su tamaño, es decir, si es posible llegar a su solución a través de una secuencia finita de pasos, pueden ser resueltos mediante la división del problema en subproblemas más pequeños y repitiendo esta acción para cada uno de los subproblemas que van surgiendo hasta llegar a problemas cuya solución es conocida o fácil de encontrar. &lt;br /&gt;
&lt;br /&gt;
==Definición==&lt;br /&gt;
La [[recursividad]], también llamada recursión o recurrencia, es la forma en la cual se especifica un proceso basado en su propia definición. O sea, si se tiene un problema de tamaño N, este puede ser dividido en instancias más pequeñas que N del mismo problema y conociendo la solución de las instancias más simples, se puede aplicar inducción a partir de estas asumiendo que quedan resueltas. &lt;br /&gt;
&lt;br /&gt;
==Condiciones necesarias==&lt;br /&gt;
Para dar solución a un problema a partir del empleo de la recursividad, es necesario asegurar que cada llamada recursiva debe estar definida sobre un problema menos complejo que el que dio lugar a la llamada, y que debe existir al menos un caso base al que se garantice la llegada del problema en un momento determinado. Si no se cumpliera esta condición se generaría una secuencia infinita de llamadas y el algoritmo que intenta dar solución al problema no terminaría nunca.&lt;br /&gt;
&lt;br /&gt;
==Ejemplos de recursividad==&lt;br /&gt;
Las siglas que identifican al proyecto [[GNU]], creado por [[Richard Stallman]] son un ejemplo de recursividad, ya que su significado es GNU is not Unix, (en español GNU no es Unix), donde la G realizaría una nueva llamada a la sigla.&lt;br /&gt;
En la programación existen problemas conocidos que se pueden resolver utilizando la recursividad, como son la Sucesión de Fibonacci, el problema de las 8 reinas, así como el cálculo del factorial y la potencia de un número.&lt;br /&gt;
&lt;br /&gt;
==Problemas resueltos de forma recursiva==&lt;br /&gt;
===Producto de dos números===&lt;br /&gt;
Un ejemplo de solución a un problema de forma recursiva sería el siguiente. Se puede calcular el producto de dos números de forma recurrente. Para la solución del problema se permite emplear cualquier operador diferente del operador de multiplicación. Tomaremos como ejemplo la multiplicación de 3 y 4. Como caso base conocemos que el resultado de multiplicar cualquier número por 1 será el mismo número. &lt;br /&gt;
&lt;br /&gt;
3 * 4 se puede descomponer en 3 + 3 * 3&lt;br /&gt;
Del mismo modo 3 * 3 se puede descomponer en 3 + 3 * 2&lt;br /&gt;
Y así sucesivamente&lt;br /&gt;
La figura muestra la secuencia de pasos completa que da solución al problema.&lt;br /&gt;
[[Imagen:multrec.jpg|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
===Torres de Hanoi===&lt;br /&gt;
Otro ejemplo es el problema de las Torres de Hanoi. El problema es el siguiente:&lt;br /&gt;
Se tiene tres postes: A, B y C. En el poste A se coloca una cantidad determinada de discos de diámetro diferente,  de modo que un disco de diámetro menor siempre queda sobre uno de diámetro mayor. El objetivo es mover los discos al poste C usando el poste B como auxiliar. Sólo puede moverse el disco superior de cualquier poste a otro poste, y un disco mayor no puede estar en ningún momento sobre uno menor. &lt;br /&gt;
&lt;br /&gt;
Como se puede observar este problema no está planteado en términos recursivos, sin embargo se puede buscar una forma recursiva de dar solución al mismo.&lt;br /&gt;
&lt;br /&gt;
La solución al problema de mover los n discos puede existir a partir de encontrar la solución al movimiento de n – 1 discos, pues al restar sucesivamente n – 1 llegaremos al caso base, mover un disco, cuya solución sería realizar el movimiento del disco de la torre A a la C, como se observa en la figura.&lt;br /&gt;
[[Imagen:Hanoi_um.png|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
Si se deseara mover dos discos desde la posición inicial a la final los movimientos serían los que se muestran en la imagen.&lt;br /&gt;
[[Imagen:Hanoi_dm.png|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
Conociendo la solución para el movimiento de dos discos, es posible buscar la solución para tres. De la misma forma en que se realizó el movimiento de dos discos desde A hasta C utilizando B como auxiliar, podemos desplazar estos dos discos de C hacia B empleando como auxiliar a A. &lt;br /&gt;
[[Imagen:Hanoi_tm.png|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
En este punto tendríamos los dos discos de menor tamaño en B y el mayor en A, el siguiente paso sería mover un disco de A a C como se hizo en el caso base y a continuación mover los discos restantes de B a C usando la torre A como auxiliar.&lt;br /&gt;
&lt;br /&gt;
Siguiendo estas reglas, se puede hallar la solución al problema de n discos, conociendo la solución para n – 1. &lt;br /&gt;
&lt;br /&gt;
En términos generales, la solución sería la siguiente:&lt;br /&gt;
&lt;br /&gt;
   - Si n es 1 mover el disco de A a C y terminar.&lt;br /&gt;
   - Si n es mayor que 1 entonces:&lt;br /&gt;
   - Mover el disco superior desde A hasta B n – 1 veces utilizando C como auxiliar.&lt;br /&gt;
   - Mover el disco restante desde A hasta C.&lt;br /&gt;
   - Mover los n – 1 discos desde B hasta C empleando A como auxiliar.&lt;br /&gt;
&lt;br /&gt;
Como se ha podido comprobar, la recursividad es una técnica que puede ayudar a encontrar soluciones a problemas cuya solución de manera iterativa resulta bastante engorrosa. El estudio de la misma resulta de gran ayuda para los programadores a la hora de dar respuesta a diversos problemas. &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fuentes==&lt;br /&gt;
&lt;br /&gt;
http://es.wikipedia.org/wiki/Algoritmo_recursivo&lt;br /&gt;
&lt;br /&gt;
http://es.wikipedia.org/wiki/Recursi%C3%B3n&lt;br /&gt;
&lt;br /&gt;
Chávez Agüero, Abel   Ing. Ciencias Informáticas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Abel0202adJc</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Recursividad&amp;diff=447379</id>
		<title>Recursividad</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Recursividad&amp;diff=447379"/>
		<updated>2011-03-24T17:49:23Z</updated>

		<summary type="html">&lt;p&gt;Abel0202adJc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''{{Definición|Nombre=Recursividad|imagen=recu.jpg}}'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;justify&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En el área de la [[programación]] de aplicaciones los programadores pueden enfrentarse a problemas de cualquier complejidad y buscar la solución más eficiente para cada uno de ellos. Algunos de estos problemas, siempre y cuando puedan ser definidos en función de su tamaño, es decir, si es posible llegar a su solución a través de una secuencia finita de pasos, pueden ser resueltos mediante la división del problema en subproblemas más pequeños y repitiendo esta acción para cada uno de los subproblemas que van surgiendo hasta llegar a problemas cuya solución es conocida o fácil de encontrar. &lt;br /&gt;
&lt;br /&gt;
==Definición==&lt;br /&gt;
La [[recursividad]], también llamada recursión o recurrencia, es la forma en la cual se especifica un proceso basado en su propia definición. O sea, si se tiene un problema de tamaño N, este puede ser dividido en instancias más pequeñas que N del mismo problema y conociendo la solución de las instancias más simples, se puede aplicar inducción a partir de estas asumiendo que quedan resueltas. &lt;br /&gt;
&lt;br /&gt;
==Condiciones necesarias==&lt;br /&gt;
Para dar solución a un problema a partir del empleo de la recursividad, es necesario asegurar que cada llamada recursiva debe estar definida sobre un problema menos complejo que el que dio lugar a la llamada, y que debe existir al menos un caso base al que se garantice la llegada del problema en un momento determinado. Si no se cumpliera esta condición se generaría una secuencia infinita de llamadas y el algoritmo que intenta dar solución al problema no terminaría nunca.&lt;br /&gt;
&lt;br /&gt;
==Ejemplos de recursividad==&lt;br /&gt;
Las siglas que identifican al proyecto [[GNU]], creado por [[Richard Stallman]] son un ejemplo de recursividad, ya que su significado es GNU is not Unix, (en español GNU no es Unix), donde la G realizaría una nueva llamada a la sigla.&lt;br /&gt;
En la programación existen problemas conocidos que se pueden resolver utilizando la recursividad, como son la Sucesión de Fibonacci, el problema de las 8 reinas, así como el cálculo del factorial y la potencia de un número.&lt;br /&gt;
&lt;br /&gt;
==Problemas resueltos de forma recursiva==&lt;br /&gt;
===Producto de dos números===&lt;br /&gt;
Un ejemplo de solución a un problema de forma recursiva sería el siguiente. Se puede calcular el producto de dos números de forma recurrente. Para la solución del problema se permite emplear cualquier operador diferente del operador de multiplicación. Tomaremos como ejemplo la multiplicación de 3 y 4. Como caso base conocemos que el resultado de multiplicar cualquier número por 1 será el mismo número. &lt;br /&gt;
&lt;br /&gt;
3 * 4 se puede descomponer en 3 + 3 * 3&lt;br /&gt;
Del mismo modo 3 * 3 se puede descomponer en 3 + 3 * 2&lt;br /&gt;
Y así sucesivamente&lt;br /&gt;
La figura muestra la secuencia de pasos completa que da solución al problema.&lt;br /&gt;
[[Imagen:multrec.jpg|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
===Torres de Hanoi===&lt;br /&gt;
Otro ejemplo es el problema de las Torres de Hanoi. El problema es el siguiente:&lt;br /&gt;
Se tiene tres postes: A, B y C. En el poste A se coloca una cantidad determinada de discos de diámetro diferente,  de modo que un disco de diámetro menor siempre queda sobre uno de diámetro mayor. El objetivo es mover los discos al poste C usando el poste B como auxiliar. Sólo puede moverse el disco superior de cualquier poste a otro poste, y un disco mayor no puede estar en ningún momento sobre uno menor. &lt;br /&gt;
&lt;br /&gt;
Como se puede observar este problema no está planteado en términos recursivos, sin embargo se puede buscar una forma recursiva de dar solución al mismo.&lt;br /&gt;
&lt;br /&gt;
La solución al problema de mover los n discos puede existir a partir de encontrar la solución al movimiento de n – 1 discos, pues al restar sucesivamente n – 1 llegaremos al caso base, mover un disco, cuya solución sería realizar el movimiento del disco de la torre A a la C, como se observa en la figura.&lt;br /&gt;
[[Imagen:hanoi1d.jpeg|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
Si se deseara mover dos discos desde la posición inicial a la final los movimientos serían los que se muestran en la imagen.&lt;br /&gt;
[[Imagen:hanoi2d.jpg|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
Conociendo la solución para el movimiento de dos discos, es posible buscar la solución para tres. De la misma forma en que se realizó el movimiento de dos discos desde A hasta C utilizando B como auxiliar, podemos desplazar estos dos discos de C hacia B empleando como auxiliar a A. &lt;br /&gt;
[[Imagen:hanoiInt.jpg|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
En este punto tendríamos los dos discos de menor tamaño en B y el mayor en A, el siguiente paso sería mover un disco de A a C como se hizo en el caso base y a continuación mover los discos restantes de B a C usando la torre A como auxiliar.&lt;br /&gt;
&lt;br /&gt;
Siguiendo estas reglas, se puede hallar la solución al problema de n discos, conociendo la solución para n – 1. &lt;br /&gt;
&lt;br /&gt;
En términos generales, la solución sería la siguiente:&lt;br /&gt;
&lt;br /&gt;
   - Si n es 1 mover el disco de A a C y terminar.&lt;br /&gt;
   - Si n es mayor que 1 entonces:&lt;br /&gt;
   - Mover el disco superior desde A hasta B n – 1 veces utilizando C como auxiliar.&lt;br /&gt;
   - Mover el disco restante desde A hasta C.&lt;br /&gt;
   - Mover los n – 1 discos desde B hasta C empleando A como auxiliar.&lt;br /&gt;
&lt;br /&gt;
Como se ha podido comprobar, la recursividad es una técnica que puede ayudar a encontrar soluciones a problemas cuya solución de manera iterativa resulta bastante engorrosa. El estudio de la misma resulta de gran ayuda para los programadores a la hora de dar respuesta a diversos problemas. &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fuentes==&lt;br /&gt;
&lt;br /&gt;
http://es.wikipedia.org/wiki/Algoritmo_recursivo&lt;br /&gt;
&lt;br /&gt;
http://es.wikipedia.org/wiki/Recursi%C3%B3n&lt;br /&gt;
&lt;br /&gt;
Chávez Agüero, Abel   Ing. Ciencias Informáticas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Abel0202adJc</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Recursividad&amp;diff=446525</id>
		<title>Recursividad</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Recursividad&amp;diff=446525"/>
		<updated>2011-03-24T15:36:51Z</updated>

		<summary type="html">&lt;p&gt;Abel0202adJc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''{{Definición|Nombre=Recursividad|imagen=recu.jpg}}'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;justify&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En el área de la [[programación]] de aplicaciones los programadores pueden enfrentarse a problemas de cualquier complejidad y buscar la solución más eficiente para cada uno de ellos. Algunos de estos problemas, siempre y cuando puedan ser definidos en función de su tamaño, es decir, si es posible llegar a su solución a través de una secuencia finita de pasos, pueden ser resueltos mediante la división del problema en subproblemas más pequeños y repitiendo esta acción para cada uno de los subproblemas que van surgiendo hasta llegar a problemas cuya solución es conocida o fácil de encontrar. &lt;br /&gt;
&lt;br /&gt;
=='''Definición'''==&lt;br /&gt;
La [[recursividad]], también llamada recursión o recurrencia, es la forma en la cual se especifica un proceso basado en su propia definición. O sea, si se tiene un problema de tamaño N, este puede ser dividido en instancias más pequeñas que N del mismo problema y conociendo la solución de las instancias más simples, se puede aplicar inducción a partir de estas asumiendo que quedan resueltas. &lt;br /&gt;
&lt;br /&gt;
=='''Condiciones necesarias'''==&lt;br /&gt;
Para dar solución a un problema a partir del empleo de la recursividad, es necesario asegurar que cada llamada recursiva debe estar definida sobre un problema menos complejo que el que dio lugar a la llamada, y que debe existir al menos un caso base al que se garantice la llegada del problema en un momento determinado. Si no se cumpliera esta condición se generaría una secuencia infinita de llamadas y el algoritmo que intenta dar solución al problema no terminaría nunca.&lt;br /&gt;
&lt;br /&gt;
=='''Ejemplos de recursividad'''==&lt;br /&gt;
Las siglas que identifican al proyecto [[GNU]], creado por [[Richard Stallman]] son un ejemplo de recursividad, ya que su significado es GNU is not Unix, (en español GNU no es Unix), donde la G realizaría una nueva llamada a la sigla.&lt;br /&gt;
En la programación existen problemas conocidos que se pueden resolver utilizando la recursividad, como son la Sucesión de Fibonacci, el problema de las 8 reinas, así como el cálculo del factorial y la potencia de un número.&lt;br /&gt;
&lt;br /&gt;
=='''Problemas resueltos de forma recursiva'''==&lt;br /&gt;
==='''Producto de dos números'''===&lt;br /&gt;
Un ejemplo de solución a un problema de forma recursiva sería el siguiente. Se puede calcular el producto de dos números de forma recurrente. Para la solución del problema se permite emplear cualquier operador diferente del operador de multiplicación. Tomaremos como ejemplo la multiplicación de 3 y 4. Como caso base conocemos que el resultado de multiplicar cualquier número por 1 será el mismo número. &lt;br /&gt;
&lt;br /&gt;
3 * 4 se puede descomponer en 3 + 3 * 3&lt;br /&gt;
Del mismo modo 3 * 3 se puede descomponer en 3 + 3 * 2&lt;br /&gt;
Y así sucesivamente&lt;br /&gt;
La figura muestra la secuencia de pasos completa que da solución al problema.&lt;br /&gt;
[[Imagen:multrec.jpg|thumb|left|]]&lt;br /&gt;
&lt;br /&gt;
==='''Torres de Hanoi'''===&lt;br /&gt;
Otro ejemplo es el problema de las Torres de Hanoi. El problema es el siguiente:&lt;br /&gt;
Se tiene tres postes: A, B y C. En el poste A se coloca una cantidad determinada de discos de diámetro diferente,  de modo que un disco de diámetro menor siempre queda sobre uno de diámetro mayor. El objetivo es mover los discos al poste C usando el poste B como auxiliar. Sólo puede moverse el disco superior de cualquier poste a otro poste, y un disco mayor no puede estar en ningún momento sobre uno menor. &lt;br /&gt;
&lt;br /&gt;
Como se puede observar este problema no está planteado en términos recursivos, sin embargo se puede buscar una forma recursiva de dar solución al mismo.&lt;br /&gt;
&lt;br /&gt;
La solución al problema de mover los n discos puede existir a partir de encontrar la solución al movimiento de n – 1 discos, pues al restar sucesivamente n – 1 llegaremos al caso base, mover un disco, cuya solución sería realizar el movimiento del disco de la torre A a la C, como se observa en la figura.&lt;br /&gt;
[[Imagen:multrec.jpg|thumb|left|]]&lt;br /&gt;
&lt;br /&gt;
Si se deseara mover dos discos desde la posición inicial a la final los movimientos serían los que se muestran en la imagen.&lt;br /&gt;
[[Imagen:hanoi2d.jpg|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
Conociendo la solución para el movimiento de dos discos, es posible buscar la solución para tres. De la misma forma en que se realizó el movimiento de dos discos desde A hasta C utilizando B como auxiliar, podemos desplazar estos dos discos de C hacia B empleando como auxiliar a A. &lt;br /&gt;
[[Imagen:hanoiInt.jpg|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
En este punto tendríamos los dos discos de menor tamaño en B y el mayor en A, el siguiente paso sería mover un disco de A a C como se hizo en el caso base y a continuación mover los discos restantes de B a C usando la torre A como auxiliar.&lt;br /&gt;
&lt;br /&gt;
Siguiendo estas reglas, se puede hallar la solución al problema de n discos, conociendo la solución para n – 1. &lt;br /&gt;
&lt;br /&gt;
En términos generales, la solución sería la siguiente:&lt;br /&gt;
&lt;br /&gt;
   - Si n es 1 mover el disco de A a C y terminar.&lt;br /&gt;
   - Si n es mayor que 1 entonces:&lt;br /&gt;
   - Mover el disco superior desde A hasta B n – 1 veces utilizando C como auxiliar.&lt;br /&gt;
   - Mover el disco restante desde A hasta C.&lt;br /&gt;
   - Mover los n – 1 discos desde B hasta C empleando A como auxiliar.&lt;br /&gt;
&lt;br /&gt;
Como se ha podido comprobar, la recursividad es una técnica que puede ayudar a encontrar soluciones a problemas cuya solución de manera iterativa resulta bastante engorrosa. El estudio de la misma resulta de gran ayuda para los programadores a la hora de dar respuesta a diversos problemas. &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Fuentes'''==&lt;br /&gt;
&lt;br /&gt;
http://es.wikipedia.org/wiki/Algoritmo_recursivo&lt;br /&gt;
&lt;br /&gt;
http://es.wikipedia.org/wiki/Recursi%C3%B3n&lt;br /&gt;
&lt;br /&gt;
Chávez Agüero, Abel   Ing. Ciencias Informáticas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Abel0202adJc</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Recursividad&amp;diff=446464</id>
		<title>Recursividad</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Recursividad&amp;diff=446464"/>
		<updated>2011-03-24T15:28:35Z</updated>

		<summary type="html">&lt;p&gt;Abel0202adJc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''{{Definición|Nombre=Recursividad|imagen=recu.jpg}}'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;justify&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En el área de la [[programación]] de aplicaciones los programadores pueden enfrentarse a problemas de cualquier complejidad y buscar la solución más eficiente para cada uno de ellos. Algunos de estos problemas, siempre y cuando puedan ser definidos en función de su tamaño, es decir, si es posible llegar a su solución a través de una secuencia finita de pasos, pueden ser resueltos mediante la división del problema en subproblemas más pequeños y repitiendo esta acción para cada uno de los subproblemas que van surgiendo hasta llegar a problemas cuya solución es conocida o fácil de encontrar. &lt;br /&gt;
&lt;br /&gt;
=='''Definición'''==&lt;br /&gt;
La [[recursividad]], también llamada recursión o recurrencia, es la forma en la cual se especifica un proceso basado en su propia definición. O sea, si se tiene un problema de tamaño N, este puede ser dividido en instancias más pequeñas que N del mismo problema y conociendo la solución de las instancias más simples, se puede aplicar inducción a partir de estas asumiendo que quedan resueltas. &lt;br /&gt;
&lt;br /&gt;
=='''Condiciones necesarias'''==&lt;br /&gt;
Para dar solución a un problema a partir del empleo de la recursividad, es necesario asegurar que cada llamada recursiva debe estar definida sobre un problema menos complejo que el que dio lugar a la llamada, y que debe existir al menos un caso base al que se garantice la llegada del problema en un momento determinado. Si no se cumpliera esta condición se generaría una secuencia infinita de llamadas y el algoritmo que intenta dar solución al problema no terminaría nunca.&lt;br /&gt;
&lt;br /&gt;
=='''Ejemplos de recursividad'''==&lt;br /&gt;
Las siglas que identifican al proyecto [[GNU]], creado por [[Richard Stallman]] son un ejemplo de recursividad, ya que su significado es GNU is not Unix, (en español GNU no es Unix), donde la G realizaría una nueva llamada a la sigla.&lt;br /&gt;
En la programación existen problemas conocidos que se pueden resolver utilizando la recursividad, como son la Sucesión de Fibonacci, el problema de las 8 reinas, así como el cálculo del factorial y la potencia de un número.&lt;br /&gt;
&lt;br /&gt;
=='''Problemas resueltos de forma recursiva'''==&lt;br /&gt;
==='''Producto de dos números'''===&lt;br /&gt;
Un ejemplo de solución a un problema de forma recursiva sería el siguiente. Se puede calcular el producto de dos números de forma recurrente. Para la solución del problema se permite emplear cualquier operador diferente del operador de multiplicación. Tomaremos como ejemplo la multiplicación de 3 y 4. Como caso base conocemos que el resultado de multiplicar cualquier número por 1 será el mismo número. &lt;br /&gt;
&lt;br /&gt;
3 * 4 se puede descomponer en 3 + 3 * 3&lt;br /&gt;
Del mismo modo 3 * 3 se puede descomponer en 3 + 3 * 2&lt;br /&gt;
Y así sucesivamente&lt;br /&gt;
La figura muestra la secuencia de pasos completa que da solución al problema.&lt;br /&gt;
[[Imagen:multrec.jpg|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
==='''Torres de Hanoi'''===&lt;br /&gt;
Otro ejemplo es el problema de las Torres de Hanoi. El problema es el siguiente:&lt;br /&gt;
Se tiene tres postes: A, B y C. En el poste A se coloca una cantidad determinada de discos de diámetro diferente,  de modo que un disco de diámetro menor siempre queda sobre uno de diámetro mayor. El objetivo es mover los discos al poste C usando el poste B como auxiliar. Sólo puede moverse el disco superior de cualquier poste a otro poste, y un disco mayor no puede estar en ningún momento sobre uno menor. &lt;br /&gt;
&lt;br /&gt;
Como se puede observar este problema no está planteado en términos recursivos, sin embargo se puede buscar una forma recursiva de dar solución al mismo.&lt;br /&gt;
&lt;br /&gt;
La solución al problema de mover los n discos puede existir a partir de encontrar la solución al movimiento de n – 1 discos, pues al restar sucesivamente n – 1 llegaremos al caso base, mover un disco, cuya solución sería realizar el movimiento del disco de la torre A a la C, como se observa en la figura.&lt;br /&gt;
[[Imagen:hanoi1d.jpg|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
Si se deseara mover dos discos desde la posición inicial a la final los movimientos serían los que se muestran en la imagen.&lt;br /&gt;
[[Imagen:hanoi2d.jpg|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
Conociendo la solución para el movimiento de dos discos, es posible buscar la solución para tres. De la misma forma en que se realizó el movimiento de dos discos desde A hasta C utilizando B como auxiliar, podemos desplazar estos dos discos de C hacia B empleando como auxiliar a A. &lt;br /&gt;
[[Imagen:hanoiInt.jpg|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
En este punto tendríamos los dos discos de menor tamaño en B y el mayor en A, el siguiente paso sería mover un disco de A a C como se hizo en el caso base y a continuación mover los discos restantes de B a C usando la torre A como auxiliar.&lt;br /&gt;
&lt;br /&gt;
Siguiendo estas reglas, se puede hallar la solución al problema de n discos, conociendo la solución para n – 1. &lt;br /&gt;
&lt;br /&gt;
En términos generales, la solución sería la siguiente:&lt;br /&gt;
&lt;br /&gt;
   - Si n es 1 mover el disco de A a C y terminar.&lt;br /&gt;
   - Si n es mayor que 1 entonces:&lt;br /&gt;
   - Mover el disco superior desde A hasta B n – 1 veces utilizando C como auxiliar.&lt;br /&gt;
   - Mover el disco restante desde A hasta C.&lt;br /&gt;
   - Mover los n – 1 discos desde B hasta C empleando A como auxiliar.&lt;br /&gt;
&lt;br /&gt;
Como se ha podido comprobar, la recursividad es una técnica que puede ayudar a encontrar soluciones a problemas cuya solución de manera iterativa resulta bastante engorrosa. El estudio de la misma resulta de gran ayuda para los programadores a la hora de dar respuesta a diversos problemas. &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Fuentes'''==&lt;br /&gt;
&lt;br /&gt;
http://es.wikipedia.org/wiki/Algoritmo_recursivo&lt;br /&gt;
&lt;br /&gt;
http://es.wikipedia.org/wiki/Recursi%C3%B3n&lt;br /&gt;
&lt;br /&gt;
Chávez Agüero, Abel   Ing. Ciencias Informáticas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Abel0202adJc</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Recursividad&amp;diff=446374</id>
		<title>Recursividad</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Recursividad&amp;diff=446374"/>
		<updated>2011-03-24T15:17:32Z</updated>

		<summary type="html">&lt;p&gt;Abel0202adJc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''{{Definición|Nombre=Recursividad|imagen=recu.jpg}}'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;justify&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En el área de la [[programación]] de aplicaciones los programadores pueden enfrentarse a problemas de cualquier complejidad y buscar la solución más eficiente para cada uno de ellos. Algunos de estos problemas, siempre y cuando puedan ser definidos en función de su tamaño, es decir, si es posible llegar a su solución a través de una secuencia finita de pasos, pueden ser resueltos mediante la división del problema en subproblemas más pequeños y repitiendo esta acción para cada uno de los subproblemas que van surgiendo hasta llegar a problemas cuya solución es conocida o fácil de encontrar. &lt;br /&gt;
&lt;br /&gt;
=='''Definición'''==&lt;br /&gt;
La [[recursividad]], también llamada recursión o recurrencia, es la forma en la cual se especifica un proceso basado en su propia definición. O sea, si se tiene un problema de tamaño N, este puede ser dividido en instancias más pequeñas que N del mismo problema y conociendo la solución de las instancias más simples, se puede aplicar inducción a partir de estas asumiendo que quedan resueltas. &lt;br /&gt;
&lt;br /&gt;
=='''Condiciones necesarias'''==&lt;br /&gt;
Para dar solución a un problema a partir del empleo de la recursividad, es necesario asegurar que cada llamada recursiva debe estar definida sobre un problema menos complejo que el que dio lugar a la llamada, y que debe existir al menos un caso base al que se garantice la llegada del problema en un momento determinado. Si no se cumpliera esta condición se generaría una secuencia infinita de llamadas y el algoritmo que intenta dar solución al problema no terminaría nunca.&lt;br /&gt;
&lt;br /&gt;
=='''Ejemplos de recursividad'''==&lt;br /&gt;
Las siglas que identifican al proyecto [[GNU]], creado por [[Richard Stallman]] son un ejemplo de recursividad, ya que su significado es GNU is not Unix, (en español GNU no es Unix), donde la G realizaría una nueva llamada a la sigla.&lt;br /&gt;
En la programación existen problemas conocidos que se pueden resolver utilizando la recursividad, como son la Sucesión de Fibonacci, el problema de las 8 reinas, así como el cálculo del factorial y la potencia de un número.&lt;br /&gt;
&lt;br /&gt;
=='''Problemas resueltos de forma recursiva'''==&lt;br /&gt;
==='''Producto de dos números'''===&lt;br /&gt;
Un ejemplo de solución a un problema de forma recursiva sería el siguiente. Se puede calcular el producto de dos números de forma recurrente. Para la solución del problema se permite emplear cualquier operador diferente del operador de multiplicación. Tomaremos como ejemplo la multiplicación de 3 y 4. Como caso base conocemos que el resultado de multiplicar cualquier número por 1 será el mismo número. &lt;br /&gt;
&lt;br /&gt;
3 * 4 se puede descomponer en 3 + 3 * 3&lt;br /&gt;
Del mismo modo 3 * 3 se puede descomponer en 3 + 3 * 2&lt;br /&gt;
Y así sucesivamente&lt;br /&gt;
La figura 1 muestra la secuencia de pasos completa que da solución al problema.&lt;br /&gt;
[[Imagen:multrec.jpg|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
==='''Torres de Hanoi'''===&lt;br /&gt;
Otro ejemplo es el problema de las Torres de Hanoi. El problema es el siguiente:&lt;br /&gt;
Se tiene tres postes: A, B y C. En el poste A se coloca una cantidad determinada de discos de diámetro diferente,  de modo que un disco de diámetro menor siempre queda sobre uno de diámetro mayor. El objetivo es mover los discos al poste C usando el poste B como auxiliar. Sólo puede moverse el disco superior de cualquier poste a otro poste, y un disco mayor no puede estar en ningún momento sobre uno menor. &lt;br /&gt;
&lt;br /&gt;
Como se puede observar este problema no está planteado en términos recursivos, sin embargo se puede buscar una forma recursiva de dar solución al mismo.&lt;br /&gt;
&lt;br /&gt;
La solución al problema de mover los n discos puede existir a partir de encontrar la solución al movimiento de n – 1 discos, pues al restar sucesivamente n – 1 llegaremos al caso base, mover un disco, cuya solución sería realizar el movimiento del disco de la torre A a la C, como se observa en la figura 2.&lt;br /&gt;
[[Imagen:Hanoi1d.jpg|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
Si se deseara mover dos discos desde la posición inicial a la final los movimientos serían los que se muestran en la figura 3.&lt;br /&gt;
[[Imagen:Hanoi2d.jpg|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
Conociendo la solución para el movimiento de dos discos, es posible buscar la solución para tres. De la misma forma en que se realizó el movimiento de dos discos desde A hasta C utilizando B como auxiliar, podemos desplazar estos dos discos de C hacia B empleando como auxiliar a A. &lt;br /&gt;
[[Imagen:HanoiInt.jpg|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
En este punto (Figura 3) tendríamos los dos discos de menor tamaño en B y el mayor en A, el siguiente paso sería mover un disco de A a C como se hizo en el caso base y a continuación mover los discos restantes de B a C usando la torre A como auxiliar.&lt;br /&gt;
&lt;br /&gt;
Siguiendo estas reglas, se puede hallar la solución al problema de n discos, conociendo la solución para n – 1. &lt;br /&gt;
&lt;br /&gt;
En términos generales, la solución sería la siguiente:&lt;br /&gt;
&lt;br /&gt;
   - Si n es 1 mover el disco de A a C y terminar.&lt;br /&gt;
   - Si n es mayor que 1 entonces:&lt;br /&gt;
   - Mover el disco superior desde A hasta B n – 1 veces utilizando la torre C como auxiliar.&lt;br /&gt;
   - Mover el disco restante desde A hasta C.&lt;br /&gt;
   - Mover los n – 1 discos desde B hasta C empleando A como auxiliar.&lt;br /&gt;
&lt;br /&gt;
Como se ha podido comprobar, la recursividad es una técnica que puede ayudar a encontrar soluciones a problemas cuya solución de manera iterativa resulta bastante engorrosa. El estudio de la misma resulta de gran ayuda para los programadores a la hora de dar respuesta a diversos problemas. &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Fuentes'''==&lt;br /&gt;
&lt;br /&gt;
http://es.wikipedia.org/wiki/Algoritmo_recursivo&lt;br /&gt;
&lt;br /&gt;
http://es.wikipedia.org/wiki/Recursi%C3%B3n&lt;br /&gt;
&lt;br /&gt;
Chávez Agüero, Abel   Ing. Ciencias Informáticas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Abel0202adJc</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Recursividad&amp;diff=446280</id>
		<title>Recursividad</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Recursividad&amp;diff=446280"/>
		<updated>2011-03-24T15:02:56Z</updated>

		<summary type="html">&lt;p&gt;Abel0202adJc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''{{Definición|Nombre=Recursividad|imagen=recu.jpg}}'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;justify&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En el área de la [[programación]] de aplicaciones los programadores pueden enfrentarse a problemas de cualquier complejidad y buscar la solución más eficiente para cada uno de ellos. Algunos de estos problemas, siempre y cuando puedan ser definidos en función de su tamaño, es decir, si es posible llegar a su solución a través de una secuencia finita de pasos, pueden ser resueltos mediante la división del problema en subproblemas más pequeños y repitiendo esta acción para cada uno de los subproblemas que van surgiendo hasta llegar a problemas cuya solución es conocida o fácil de encontrar. &lt;br /&gt;
&lt;br /&gt;
=='''Definición'''==&lt;br /&gt;
La [[recursividad]], también llamada recursión o recurrencia, es la forma en la cual se especifica un proceso basado en su propia definición. O sea, si se tiene un problema de tamaño N, este puede ser dividido en instancias más pequeñas que N del mismo problema y conociendo la solución de las instancias más simples, se puede aplicar inducción a partir de estas asumiendo que quedan resueltas. &lt;br /&gt;
&lt;br /&gt;
=='''Condiciones necesarias'''==&lt;br /&gt;
Para dar solución a un problema a partir del empleo de la recursividad, es necesario asegurar que cada llamada recursiva debe estar definida sobre un problema menos complejo que el que dio lugar a la llamada, y que debe existir al menos un caso base al que se garantice la llegada del problema en un momento determinado. Si no se cumpliera esta condición se generaría una secuencia infinita de llamadas y el algoritmo que intenta dar solución al problema no terminaría nunca.&lt;br /&gt;
&lt;br /&gt;
=='''Ejemplos de recursividad'''==&lt;br /&gt;
Las siglas que identifican al proyecto [[GNU]], creado por [[Richard Stallman]] son un ejemplo de recursividad, ya que su significado es GNU is not Unix, (en español GNU no es Unix), donde la G realizaría una nueva llamada a la sigla.&lt;br /&gt;
En la programación existen problemas conocidos que se pueden resolver utilizando la recursividad, como son la Sucesión de Fibonacci, el problema de las 8 reinas, así como el cálculo del factorial y la potencia de un número.&lt;br /&gt;
&lt;br /&gt;
=='''Problemas resueltos de forma recursiva'''==&lt;br /&gt;
==='''Producto de dos números'''===&lt;br /&gt;
Un ejemplo de solución a un problema de forma recursiva sería el siguiente. Se puede calcular el producto de dos números de forma recurrente. Para la solución del problema se permite emplear cualquier operador diferente del operador de multiplicación. Tomaremos como ejemplo la multiplicación de 3 y 4. Como caso base conocemos que el resultado de multiplicar cualquier número por 1 será el mismo número. &lt;br /&gt;
&lt;br /&gt;
3 * 4 se puede descomponer en 3 + 3 * 3&lt;br /&gt;
Del mismo modo 3 * 3 se puede descomponer en 3 + 3 * 2&lt;br /&gt;
Y así sucesivamente&lt;br /&gt;
La figura 1 muestra la secuencia de pasos completa que da solución al problema.&lt;br /&gt;
[[Imagen:multrec.jpg|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
==='''Torres de Hanoi'''===&lt;br /&gt;
Otro ejemplo es el problema de las Torres de Hanoi. El problema es el siguiente:&lt;br /&gt;
Se tiene tres postes: A, B y C. En el poste A se coloca una cantidad determinada de discos de diámetro diferente,  de modo que un disco de diámetro menor siempre queda sobre uno de diámetro mayor. El objetivo es mover los discos al poste C usando el poste B como auxiliar. Sólo puede moverse el disco superior de cualquier poste a otro poste, y un disco mayor no puede estar en ningún momento sobre uno menor. &lt;br /&gt;
&lt;br /&gt;
Como se puede observar este problema no está planteado en términos recursivos, sin embargo se puede buscar una forma recursiva de dar solución al mismo.&lt;br /&gt;
&lt;br /&gt;
La solución al problema de mover los n discos puede existir a partir de encontrar la solución al movimiento de n – 1 discos, pues al restar sucesivamente n – 1 llegaremos al caso base, mover un disco, cuya solución sería realizar el movimiento del disco de la torre A a la C, como se observa en la figura 2.&lt;br /&gt;
[[Imagen:hanoi1d.jpg|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
Si se deseara mover dos discos desde la posición inicial a la final los movimientos serían los que se muestran en la figura 3.&lt;br /&gt;
[[Imagen:hanoi2d.jpg|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
Conociendo la solución para el movimiento de dos discos, es posible buscar la solución para tres. De la misma forma en que se realizó el movimiento de dos discos desde A hasta C utilizando B como auxiliar, podemos desplazar estos dos discos de C hacia B empleando como auxiliar a A. &lt;br /&gt;
[[Imagen:hanoiInt.jpg|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
En este punto (Figura 3) tendríamos los dos discos de menor tamaño en B y el mayor en A, el siguiente paso sería mover un disco de A a C como se hizo en el caso base y a continuación mover los discos restantes de B a C usando la torre A como auxiliar.&lt;br /&gt;
&lt;br /&gt;
Siguiendo estas reglas, se puede hallar la solución al problema de n discos, conociendo la solución para n – 1. &lt;br /&gt;
&lt;br /&gt;
En términos generales, la solución sería la siguiente:&lt;br /&gt;
&lt;br /&gt;
   - Si n es 1 mover el disco de A a C y terminar.&lt;br /&gt;
   - Si n es mayor que 1 entonces:&lt;br /&gt;
   - Mover el disco superior desde A hasta B n – 1 veces utilizando la torre C como auxiliar.&lt;br /&gt;
   - Mover el disco restante desde A hasta C.&lt;br /&gt;
   - Mover los n – 1 discos desde B hasta C empleando A como auxiliar.&lt;br /&gt;
&lt;br /&gt;
Como se ha podido comprobar, la recursividad es una técnica que puede ayudar a encontrar soluciones a problemas cuya solución de manera iterativa resulta bastante engorrosa. El estudio de la misma resulta de gran ayuda para los programadores a la hora de dar respuesta a diversos problemas. &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Fuentes'''==&lt;br /&gt;
&lt;br /&gt;
http://es.wikipedia.org/wiki/Algoritmo_recursivo&lt;br /&gt;
&lt;br /&gt;
http://es.wikipedia.org/wiki/Recursi%C3%B3n&lt;br /&gt;
&lt;br /&gt;
Chávez Agüero, Abel   Ing. Ciencias Informáticas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Abel0202adJc</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Recursividad&amp;diff=446235</id>
		<title>Recursividad</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Recursividad&amp;diff=446235"/>
		<updated>2011-03-24T14:56:01Z</updated>

		<summary type="html">&lt;p&gt;Abel0202adJc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''{{Definición|Nombre=Recursividad|imagen=recu.jpg}}'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;justify&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En el área de la [[programación]] de aplicaciones los programadores pueden enfrentarse a problemas de cualquier complejidad y buscar la solución más eficiente para cada uno de ellos. Algunos de estos problemas, siempre y cuando puedan ser definidos en función de su tamaño, es decir, si es posible llegar a su solución a través de una secuencia finita de pasos, pueden ser resueltos mediante la división del problema en subproblemas más pequeños y repitiendo esta acción para cada uno de los subproblemas que van surgiendo hasta llegar a problemas cuya solución es conocida o fácil de encontrar. &lt;br /&gt;
&lt;br /&gt;
=='''Definición'''==&lt;br /&gt;
La [[recursividad]], también llamada recursión o recurrencia, es la forma en la cual se especifica un proceso basado en su propia definición. O sea, si se tiene un problema de tamaño N, este puede ser dividido en instancias más pequeñas que N del mismo problema y conociendo la solución de las instancias más simples, se puede aplicar inducción a partir de estas asumiendo que quedan resueltas. &lt;br /&gt;
&lt;br /&gt;
=='''Condiciones necesarias'''==&lt;br /&gt;
Para dar solución a un problema a partir del empleo de la recursividad, es necesario asegurar que cada llamada recursiva debe estar definida sobre un problema menos complejo que el que dio lugar a la llamada, y que debe existir al menos un caso base al que se garantice la llegada del problema en un momento determinado. Si no se cumpliera esta condición se generaría una secuencia infinita de llamadas y el algoritmo que intenta dar solución al problema no terminaría nunca.&lt;br /&gt;
&lt;br /&gt;
=='''Ejemplos de recursividad'''==&lt;br /&gt;
Las siglas que identifican al proyecto [[GNU]], creado por [[Richard Stallman]] son un ejemplo de recursividad, ya que su significado es GNU is not Unix, (en español GNU no es Unix), donde la G realizaría una nueva llamada a la sigla.&lt;br /&gt;
En la programación existen problemas conocidos que se pueden resolver utilizando la recursividad, como son la Sucesión de Fibonacci, el problema de las 8 reinas, así como el cálculo del factorial y la potencia de un número.&lt;br /&gt;
&lt;br /&gt;
=='''Problemas resueltos de forma recursiva'''==&lt;br /&gt;
==='''Producto de dos números'''===&lt;br /&gt;
Un ejemplo de solución a un problema de forma recursiva sería el siguiente. Se puede calcular el producto de dos números de forma recurrente. Para la solución del problema se permite emplear cualquier operador diferente del operador de multiplicación. Tomaremos como ejemplo la multiplicación de 3 y 4. Como caso base conocemos que el resultado de multiplicar cualquier número por 1 será el mismo número. &lt;br /&gt;
&lt;br /&gt;
3 * 4 se puede descomponer en 3 + 3 * 3&lt;br /&gt;
Del mismo modo 3 * 3 se puede descomponer en 3 + 3 * 2&lt;br /&gt;
Y así sucesivamente&lt;br /&gt;
La figura 1 muestra la secuencia de pasos completa que da solución al problema.&lt;br /&gt;
&lt;br /&gt;
[[Imagen:multrec.jpg|thumb|left|]]&lt;br /&gt;
&lt;br /&gt;
==='''Torres de Hanoi'''===&lt;br /&gt;
Otro ejemplo es el problema de las Torres de Hanoi. El problema es el siguiente:&lt;br /&gt;
Se tiene tres postes: A, B y C. En el poste A se coloca una cantidad determinada de discos de diámetro diferente,  de modo que un disco de diámetro menor siempre queda sobre uno de diámetro mayor. El objetivo es mover los discos al poste C usando el poste B como auxiliar. Sólo puede moverse el disco superior de cualquier poste a otro poste, y un disco mayor no puede estar en ningún momento sobre uno menor. &lt;br /&gt;
&lt;br /&gt;
Como se puede observar este problema no está planteado en términos recursivos, sin embargo se puede buscar una forma recursiva de dar solución al mismo.&lt;br /&gt;
&lt;br /&gt;
La solución al problema de mover los n discos puede existir a partir de encontrar la solución al movimiento de n – 1 discos, pues al restar sucesivamente n – 1 llegaremos al caso base, mover un disco, cuya solución sería realizar el movimiento del disco de la torre A a la C, como se observa en la figura 2.&lt;br /&gt;
&lt;br /&gt;
[[Imagen:hanoi1d.jpg|thumb|left|]]&lt;br /&gt;
&lt;br /&gt;
Si se deseara mover dos discos desde la posición inicial a la final los movimientos serían los que se muestran en la figura 3.&lt;br /&gt;
&lt;br /&gt;
[[Imagen:hanoi2d.jpg|thumb|left|]]&lt;br /&gt;
&lt;br /&gt;
Conociendo la solución para el movimiento de dos discos, es posible buscar la solución para tres. De la misma forma en que se realizó el movimiento de dos discos desde A hasta C utilizando B como auxiliar, podemos desplazar estos dos discos de C hacia B empleando como auxiliar a A. &lt;br /&gt;
&lt;br /&gt;
[[Imagen:hanoiInt.jpg|thumb|left|]]&lt;br /&gt;
&lt;br /&gt;
En este punto (Figura 3) tendríamos los dos discos de menor tamaño en B y el mayor en A, el siguiente paso sería mover un disco de A a C como se hizo en el caso base y a continuación mover los discos restantes de B a C usando la torre A como auxiliar.&lt;br /&gt;
&lt;br /&gt;
Siguiendo estas reglas, se puede hallar la solución al problema de n discos, conociendo la solución para n – 1. &lt;br /&gt;
&lt;br /&gt;
En términos generales, la solución sería la siguiente:&lt;br /&gt;
&lt;br /&gt;
   - Si n es 1 mover el disco de A a C y terminar.&lt;br /&gt;
   - Si n es mayor que 1 entonces:&lt;br /&gt;
   - Mover el disco superior desde A hasta B n – 1 veces utilizando la torre C como auxiliar.&lt;br /&gt;
   - Mover el disco restante desde A hasta C.&lt;br /&gt;
   - Mover los n – 1 discos desde B hasta C empleando A como auxiliar.&lt;br /&gt;
&lt;br /&gt;
Como se ha podido comprobar, la recursividad es una técnica que puede ayudar a encontrar soluciones a problemas cuya solución de manera iterativa resulta bastante engorrosa. El estudio de la misma resulta de gran ayuda para los programadores a la hora de dar respuesta a diversos problemas. &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Fuentes'''==&lt;br /&gt;
&lt;br /&gt;
http://es.wikipedia.org/wiki/Algoritmo_recursivo&lt;br /&gt;
&lt;br /&gt;
http://es.wikipedia.org/wiki/Recursi%C3%B3n&lt;br /&gt;
&lt;br /&gt;
Chávez Agüero, Abel   Ing. Ciencias Informáticas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Abel0202adJc</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Recursividad&amp;diff=446174</id>
		<title>Recursividad</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Recursividad&amp;diff=446174"/>
		<updated>2011-03-24T14:46:43Z</updated>

		<summary type="html">&lt;p&gt;Abel0202adJc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''{{Definición|Nombre=Recursividad|imagen=recu.jpg}}'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;justify&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En el área de la [[programación]] de aplicaciones los programadores pueden enfrentarse a problemas de cualquier complejidad y buscar la solución más eficiente para cada uno de ellos. Algunos de estos problemas, siempre y cuando puedan ser definidos en función de su tamaño, es decir, si es posible llegar a su solución a través de una secuencia finita de pasos, pueden ser resueltos mediante la división del problema en subproblemas más pequeños y repitiendo esta acción para cada uno de los subproblemas que van surgiendo hasta llegar a problemas cuya solución es conocida o fácil de encontrar. &lt;br /&gt;
&lt;br /&gt;
=='''Definición'''==&lt;br /&gt;
La [[recursividad]], también llamada recursión o recurrencia, es la forma en la cual se especifica un proceso basado en su propia definición. O sea, si se tiene un problema de tamaño N, este puede ser dividido en instancias más pequeñas que N del mismo problema y conociendo la solución de las instancias más simples, se puede aplicar inducción a partir de estas asumiendo que quedan resueltas. &lt;br /&gt;
&lt;br /&gt;
=='''Condiciones necesarias'''==&lt;br /&gt;
Para dar solución a un problema a partir del empleo de la recursividad, es necesario asegurar que cada llamada recursiva debe estar definida sobre un problema menos complejo que el que dio lugar a la llamada, y que debe existir al menos un caso base al que se garantice la llegada del problema en un momento determinado. Si no se cumpliera esta condición se generaría una secuencia infinita de llamadas y el algoritmo que intenta dar solución al problema no terminaría nunca.&lt;br /&gt;
&lt;br /&gt;
=='''Ejemplos de recursividad'''==&lt;br /&gt;
Las siglas que identifican al proyecto [[GNU]], creado por [[Richard Stallman]] son un ejemplo de recursividad, ya que su significado es GNU is not Unix, (en español GNU no es Unix), donde la G realizaría una nueva llamada a la sigla.&lt;br /&gt;
En la programación existen problemas conocidos que se pueden resolver utilizando la recursividad, como son la Sucesión de Fibonacci, el problema de las 8 reinas, así como el cálculo del factorial y la potencia de un número.&lt;br /&gt;
&lt;br /&gt;
=='''Problemas resueltos de forma recursiva'''==&lt;br /&gt;
==='''Producto de dos números'''===&lt;br /&gt;
Un ejemplo de solución a un problema de forma recursiva sería el siguiente. Se puede calcular el producto de dos números de forma recurrente. Para la solución del problema se permite emplear cualquier operador diferente del operador de multiplicación. Tomaremos como ejemplo la multiplicación de 3 y 4. Como caso base conocemos que el resultado de multiplicar cualquier número por 1 será el mismo número. &lt;br /&gt;
&lt;br /&gt;
3 * 4 se puede descomponer en 3 + 3 * 3&lt;br /&gt;
Del mismo modo 3 * 3 se puede descomponer en 3 + 3 * 2&lt;br /&gt;
Y así sucesivamente&lt;br /&gt;
La figura 1 muestra la secuencia de pasos completa que da solución al problema.&lt;br /&gt;
[[Imagen:multrec.jpg|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
==='''Torres de Hanoi'''===&lt;br /&gt;
Otro ejemplo es el problema de las Torres de Hanoi. El problema es el siguiente:&lt;br /&gt;
Se tiene tres postes: A, B y C. En el poste A se coloca una cantidad determinada de discos de diámetro diferente,  de modo que un disco de diámetro menor siempre queda sobre uno de diámetro mayor. El objetivo es mover los discos al poste C usando el poste B como auxiliar. Sólo puede moverse el disco superior de cualquier poste a otro poste, y un disco mayor no puede estar en ningún momento sobre uno menor. &lt;br /&gt;
&lt;br /&gt;
Como se puede observar este problema no está planteado en términos recursivos, sin embargo se puede buscar una forma recursiva de dar solución al mismo.&lt;br /&gt;
&lt;br /&gt;
La solución al problema de mover los n discos puede existir a partir de encontrar la solución al movimiento de n – 1 discos, pues al restar sucesivamente n – 1 llegaremos al caso base, mover un disco, cuya solución sería realizar el movimiento del disco de la torre A a la C, como se observa en la figura 2.&lt;br /&gt;
[[Imagen:hanoi1d.jpg|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si se deseara mover dos discos desde la posición inicial a la final los movimientos serían los que se muestran en la figura 3.&lt;br /&gt;
[[Imagen:hanoi2d.jpg|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
Conociendo la solución para el movimiento de dos discos, es posible buscar la solución para tres. De la misma forma en que se realizó el movimiento de dos discos desde A hasta C utilizando B como auxiliar, podemos desplazar estos dos discos de C hacia B empleando como auxiliar a A. &lt;br /&gt;
[[Imagen:hanoiInt.jpg|thumb|center|]]&lt;br /&gt;
En este punto (Figura 3) tendríamos los dos discos de menor tamaño en B y el mayor en A, el siguiente paso sería mover un disco de A a C como se hizo en el caso base y a continuación mover los discos restantes de B a C usando la torre A como auxiliar.&lt;br /&gt;
&lt;br /&gt;
Siguiendo estas reglas, se puede hallar la solución al problema de n discos, conociendo la solución para n – 1. &lt;br /&gt;
&lt;br /&gt;
En términos generales, la solución sería la siguiente:&lt;br /&gt;
&lt;br /&gt;
   - Si n es 1 mover el disco de A a C y terminar.&lt;br /&gt;
   - Si n es mayor que 1 entonces:&lt;br /&gt;
   - Mover el disco superior desde A hasta B n – 1 veces utilizando la torre C como auxiliar.&lt;br /&gt;
   - Mover el disco restante desde A hasta C.&lt;br /&gt;
   - Mover los n – 1 discos desde B hasta C empleando A como auxiliar.&lt;br /&gt;
&lt;br /&gt;
Como se ha podido comprobar, la recursividad es una técnica que puede ayudar a encontrar soluciones a problemas cuya solución de manera iterativa resulta bastante engorrosa. El estudio de la misma resulta de gran ayuda para los programadores a la hora de dar respuesta a diversos problemas. &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Fuentes'''==&lt;br /&gt;
&lt;br /&gt;
http://es.wikipedia.org/wiki/Algoritmo_recursivo&lt;br /&gt;
http://es.wikipedia.org/wiki/Recursi%C3%B3n&lt;br /&gt;
Chávez Agüero, Abel   Ing. Ciencias Informáticas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Abel0202adJc</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Recursividad&amp;diff=446109</id>
		<title>Recursividad</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Recursividad&amp;diff=446109"/>
		<updated>2011-03-24T14:35:37Z</updated>

		<summary type="html">&lt;p&gt;Abel0202adJc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''{{Definición|Nombre=Recursividad|imagen=recu.jpg}}'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;justify&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En el área de la [[programación]] de aplicaciones los programadores pueden enfrentarse a problemas de cualquier complejidad y buscar la solución más eficiente para cada uno de ellos. Algunos de estos problemas, siempre y cuando puedan ser definidos en función de su tamaño, es decir, si es posible llegar a su solución a través de una secuencia finita de pasos, pueden ser resueltos mediante la división del problema en subproblemas más pequeños y repitiendo esta acción para cada uno de los subproblemas que van surgiendo hasta llegar a problemas cuya solución es conocida o fácil de encontrar. &lt;br /&gt;
&lt;br /&gt;
=='''Definición'''==&lt;br /&gt;
La [[recursividad]], también llamada recursión o recurrencia, es la forma en la cual se especifica un proceso basado en su propia definición. O sea, si se tiene un problema de tamaño N, este puede ser dividido en instancias más pequeñas que N del mismo problema y conociendo la solución de las instancias más simples, se puede aplicar inducción a partir de estas asumiendo que quedan resueltas. &lt;br /&gt;
&lt;br /&gt;
=='''Condiciones necesarias'''==&lt;br /&gt;
Para dar solución a un problema a partir del empleo de la recursividad, es necesario asegurar que cada llamada recursiva debe estar definida sobre un problema menos complejo que el que dio lugar a la llamada, y que debe existir al menos un caso base al que se garantice la llegada del problema en un momento determinado. Si no se cumpliera esta condición se generaría una secuencia infinita de llamadas y el algoritmo que intenta dar solución al problema no terminaría nunca.&lt;br /&gt;
&lt;br /&gt;
=='''Ejemplos de recursividad'''==&lt;br /&gt;
Las siglas que identifican al proyecto [[GNU]], creado por [[Richard Stallman]] son un ejemplo de recursividad, ya que su significado es GNU is not Unix, (en español GNU no es Unix), donde la G realizaría una nueva llamada a la sigla.&lt;br /&gt;
En la programación existen problemas conocidos que se pueden resolver utilizando la recursividad, como son la Sucesión de Fibonacci, el problema de las 8 reinas, así como el cálculo del factorial y la potencia de un número.&lt;br /&gt;
&lt;br /&gt;
=='''Problemas resueltos de forma recursiva'''==&lt;br /&gt;
==='''Producto de dos números'''===&lt;br /&gt;
Un ejemplo de solución a un problema de forma recursiva sería el siguiente. Se puede calcular el producto de dos números de forma recurrente. Para la solución del problema se permite emplear cualquier operador diferente del operador de multiplicación. Tomaremos como ejemplo la multiplicación de 3 y 4. Como caso base conocemos que el resultado de multiplicar cualquier número por 1 será el mismo número. &lt;br /&gt;
&lt;br /&gt;
3 * 4 se puede descomponer en 3 + 3 * 3&lt;br /&gt;
Del mismo modo 3 * 3 se puede descomponer en 3 + 3 * 2&lt;br /&gt;
Y así sucesivamente&lt;br /&gt;
La figura 1 muestra la secuencia de pasos completa que da solución al problema.&lt;br /&gt;
[[Imagen:multrec.jpg|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
==='''Torres de Hanoi'''===&lt;br /&gt;
Otro ejemplo es el problema de las Torres de Hanoi. El problema es el siguiente:&lt;br /&gt;
Se tiene tres postes: A, B y C. En el poste A se coloca una cantidad determinada de discos de diámetro diferente,  de modo que un disco de diámetro menor siempre queda sobre uno de diámetro mayor. El objetivo es mover los discos al poste C usando el poste B como auxiliar. Sólo puede moverse el disco superior de cualquier poste a otro poste, y un disco mayor no puede estar en ningún momento sobre uno menor. &lt;br /&gt;
&lt;br /&gt;
Como se puede observar este problema no está planteado en términos recursivos, sin embargo se puede buscar una forma recursiva de dar solución al mismo.&lt;br /&gt;
&lt;br /&gt;
La solución al problema de mover los n discos puede existir a partir de encontrar la solución al movimiento de n – 1 discos, pues al restar sucesivamente n – 1 llegaremos al caso base, mover un disco, cuya solución sería realizar el movimiento del disco de la torre A a la C, como se observa en la figura 2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si se deseara mover dos discos desde la posición inicial a la final los movimientos serían los que se muestran en la figura 3.&lt;br /&gt;
&lt;br /&gt;
Conociendo la solución para el movimiento de dos discos, es posible buscar la solución para tres. De la misma forma en que se realizó el movimiento de dos discos desde A hasta C utilizando B como auxiliar, podemos desplazar estos dos discos de C hacia B empleando como auxiliar a A. En este punto (Figura 3) tendríamos los dos discos de menor tamaño en B y el mayor en A, el siguiente paso sería mover un disco de A a C como se hizo en el caso base y a continuación mover los discos restantes de B a C usando la torre A como auxiliar.&lt;br /&gt;
&lt;br /&gt;
Siguiendo estas reglas, se puede hallar la solución al problema de n discos, conociendo la solución para n – 1. &lt;br /&gt;
&lt;br /&gt;
En términos generales, la solución sería la siguiente:&lt;br /&gt;
* Si n es 1 mover el disco de A a C y terminar.&lt;br /&gt;
* Si n es mayor que 1 entonces:&lt;br /&gt;
* Mover el disco superior desde A hasta B n – 1 veces utilizando la torre C como auxiliar.&lt;br /&gt;
* Mover el disco restante desde A hasta C.&lt;br /&gt;
* Mover los n – 1 discos desde B hasta C empleando A como auxiliar.&lt;br /&gt;
&lt;br /&gt;
Como se ha podido comprobar, la recursividad es una técnica que puede ayudar a encontrar soluciones a problemas cuya solución de manera iterativa resulta bastante engorrosa. El estudio de la misma resulta de gran ayuda para los programadores a la hora de dar respuesta a diversos problemas. &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Fuentes'''==&lt;br /&gt;
&lt;br /&gt;
http://es.wikipedia.org/wiki/Algoritmo_recursivo&lt;br /&gt;
http://es.wikipedia.org/wiki/Recursi%C3%B3n&lt;br /&gt;
Chávez Agüero, Abel   Ing. Ciencias Informáticas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Abel0202adJc</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Archivo:Recu.jpg&amp;diff=446052</id>
		<title>Archivo:Recu.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Archivo:Recu.jpg&amp;diff=446052"/>
		<updated>2011-03-24T14:27:47Z</updated>

		<summary type="html">&lt;p&gt;Abel0202adJc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sumario ==&lt;br /&gt;
&lt;br /&gt;
== Estado de copyright: ==&lt;br /&gt;
&lt;br /&gt;
== Fuente: ==&lt;/div&gt;</summary>
		<author><name>Abel0202adJc</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Recursividad&amp;diff=446031</id>
		<title>Recursividad</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Recursividad&amp;diff=446031"/>
		<updated>2011-03-24T14:24:46Z</updated>

		<summary type="html">&lt;p&gt;Abel0202adJc: Página creada con ''''{{Definición|Nombre=Recursividad|imagen=recu.jpg}}'''&amp;lt;br&amp;gt;  &amp;lt;div align=&amp;quot;justify&amp;quot;&amp;gt;  En el área de la programación de aplicaciones los programadores pueden enfrentarse a ...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''{{Definición|Nombre=Recursividad|imagen=recu.jpg}}'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;justify&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En el área de la [[programación]] de aplicaciones los programadores pueden enfrentarse a problemas de cualquier complejidad y buscar la solución más eficiente para cada uno de ellos. Algunos de estos problemas, siempre y cuando puedan ser definidos en función de su tamaño, es decir, si es posible llegar a su solución a través de una secuencia finita de pasos, pueden ser resueltos mediante la división del problema en subproblemas más pequeños y repitiendo esta acción para cada uno de los subproblemas que van surgiendo hasta llegar a problemas cuya solución es conocida o fácil de encontrar. &lt;br /&gt;
&lt;br /&gt;
=='''Definición'''==&lt;br /&gt;
La [[recursividad]], también llamada recursión o recurrencia, es la forma en la cual se especifica un proceso basado en su propia definición. O sea, si se tiene un problema de tamaño N, este puede ser dividido en instancias más pequeñas que N del mismo problema y conociendo la solución de las instancias más simples, se puede aplicar inducción a partir de estas asumiendo que quedan resueltas. &lt;br /&gt;
&lt;br /&gt;
=='''Condiciones necesarias'''==&lt;br /&gt;
Para dar solución a un problema a partir del empleo de la recursividad, es necesario asegurar que cada llamada recursiva debe estar definida sobre un problema menos complejo que el que dio lugar a la llamada, y que debe existir al menos un caso base al que se garantice la llegada del problema en un momento determinado. Si no se cumpliera esta condición se generaría una secuencia infinita de llamadas y el algoritmo que intenta dar solución al problema no terminaría nunca.&lt;br /&gt;
&lt;br /&gt;
=='''Ejemplos de recursividad'''==&lt;br /&gt;
Las siglas que identifican al proyecto [[GNU]], creado por [[Richard Stallman]] son un ejemplo de recursividad, ya que su significado es GNU is not Unix, (en español GNU no es Unix), donde la G realizaría una nueva llamada a la sigla.&lt;br /&gt;
En la programación existen problemas conocidos que se pueden resolver utilizando la recursividad, como son la Sucesión de Fibonacci, el problema de las 8 reinas, así como el cálculo del factorial y la potencia de un número.&lt;br /&gt;
&lt;br /&gt;
=='''Problemas resueltos de forma recursiva'''==&lt;br /&gt;
==='''Producto de dos números'''===&lt;br /&gt;
Un ejemplo de solución a un problema de forma recursiva sería el siguiente. Se puede calcular el producto de dos números de forma recurrente. Para la solución del problema se permite emplear cualquier operador diferente del operador de multiplicación. Tomaremos como ejemplo la multiplicación de 3 y 4. Como caso base conocemos que el resultado de multiplicar cualquier número por 1 será el mismo número. &lt;br /&gt;
&lt;br /&gt;
3 * 4 se puede descomponer en 3 + 3 * 3&lt;br /&gt;
Del mismo modo 3 * 3 se puede descomponer en 3 + 3 * 2&lt;br /&gt;
Y así sucesivamente&lt;br /&gt;
La figura 1 muestra la secuencia de pasos completa que da solución al problema.&lt;br /&gt;
&lt;br /&gt;
==='''Torres de Hanoi'''===&lt;br /&gt;
Otro ejemplo es el problema de las Torres de Hanoi. El problema es el siguiente:&lt;br /&gt;
Se tiene tres postes: A, B y C. En el poste A se coloca una cantidad determinada de discos de diámetro diferente,  de modo que un disco de diámetro menor siempre queda sobre uno de diámetro mayor. El objetivo es mover los discos al poste C usando el poste B como auxiliar. Sólo puede moverse el disco superior de cualquier poste a otro poste, y un disco mayor no puede estar en ningún momento sobre uno menor. &lt;br /&gt;
&lt;br /&gt;
Como se puede observar este problema no está planteado en términos recursivos, sin embargo se puede buscar una forma recursiva de dar solución al mismo.&lt;br /&gt;
&lt;br /&gt;
La solución al problema de mover los n discos puede existir a partir de encontrar la solución al movimiento de n – 1 discos, pues al restar sucesivamente n – 1 llegaremos al caso base, mover un disco, cuya solución sería realizar el movimiento del disco de la torre A a la C, como se observa en la figura 2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si se deseara mover dos discos desde la posición inicial a la final los movimientos serían los que se muestran en la figura 3.&lt;br /&gt;
&lt;br /&gt;
Conociendo la solución para el movimiento de dos discos, es posible buscar la solución para tres. De la misma forma en que se realizó el movimiento de dos discos desde A hasta C utilizando B como auxiliar, podemos desplazar estos dos discos de C hacia B empleando como auxiliar a A. En este punto (Figura 3) tendríamos los dos discos de menor tamaño en B y el mayor en A, el siguiente paso sería mover un disco de A a C como se hizo en el caso base y a continuación mover los discos restantes de B a C usando la torre A como auxiliar.&lt;br /&gt;
&lt;br /&gt;
Siguiendo estas reglas, se puede hallar la solución al problema de n discos, conociendo la solución para n – 1. &lt;br /&gt;
&lt;br /&gt;
En términos generales, la solución sería la siguiente:&lt;br /&gt;
- Si n es 1 mover el disco de A a C y terminar.&lt;br /&gt;
- Si n es mayor que 1 entonces:&lt;br /&gt;
   - Mover el disco superior desde A hasta B n – 1 veces utilizando la torre C como auxiliar.&lt;br /&gt;
   - Mover el disco restante desde A hasta C.&lt;br /&gt;
   - Mover los n – 1 discos desde B hasta C empleando A como auxiliar.&lt;br /&gt;
&lt;br /&gt;
Como se ha podido comprobar, la recursividad es una técnica que puede ayudar a encontrar soluciones a problemas cuya solución de manera iterativa resulta bastante engorrosa. El estudio de la misma resulta de gran ayuda para los programadores a la hora de dar respuesta a diversos problemas. &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Fuentes'''==&lt;br /&gt;
&lt;br /&gt;
http://es.wikipedia.org/wiki/Algoritmo_recursivo&lt;br /&gt;
http://es.wikipedia.org/wiki/Recursi%C3%B3n&lt;br /&gt;
Chávez Agüero, Abel   Ing. Ciencias Informáticas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Abel0202adJc</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Archivo:Multrec.jpg&amp;diff=444466</id>
		<title>Archivo:Multrec.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Archivo:Multrec.jpg&amp;diff=444466"/>
		<updated>2011-03-23T20:39:39Z</updated>

		<summary type="html">&lt;p&gt;Abel0202adJc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sumario ==&lt;br /&gt;
&lt;br /&gt;
== Estado de copyright: ==&lt;br /&gt;
&lt;br /&gt;
== Fuente: ==&lt;/div&gt;</summary>
		<author><name>Abel0202adJc</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Archivo:Ecua2r.JPG&amp;diff=443524</id>
		<title>Archivo:Ecua2r.JPG</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Archivo:Ecua2r.JPG&amp;diff=443524"/>
		<updated>2011-03-23T18:08:05Z</updated>

		<summary type="html">&lt;p&gt;Abel0202adJc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sumario ==&lt;br /&gt;
&lt;br /&gt;
== Estado de copyright: ==&lt;br /&gt;
&lt;br /&gt;
== Fuente: ==&lt;/div&gt;</summary>
		<author><name>Abel0202adJc</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Usuario:Abel0202adJc&amp;diff=443503</id>
		<title>Usuario:Abel0202adJc</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Usuario:Abel0202adJc&amp;diff=443503"/>
		<updated>2011-03-23T18:05:04Z</updated>

		<summary type="html">&lt;p&gt;Abel0202adJc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Usuario|usuario=Abel0202adJc&lt;br /&gt;
|imagen=ecua2r.JPG&lt;br /&gt;
|apellidos=Chávez Agüero|nombre=Abel|estudio=Nivel Superior|título=Ingeniero en Ciencias Informáticas|postgrado= |temas=Recursividad , Algoritmos de Planificación de Procesos en Sistemas Operativos, Métodos criptográficos|institución=JCCE|país=Cuba}}&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Descripción  ==&lt;br /&gt;
&lt;br /&gt;
Abel Chávez Agüero, graduado de Ingeniero en Ciencias Informáticas en la Universidad de las Ciencias Informáticas en La Habana en el año 2009. Actualmente cumplo mi período de adiestramiento en el&amp;amp;nbsp; Joven Club de Computación y Electrónica&amp;amp;nbsp;Puerto Padre 2 del Municipio Puerto Padre, Las Tunas.&lt;br /&gt;
&lt;br /&gt;
== Contribuciones&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
== Proyectos &amp;lt;br&amp;gt;  ==&lt;/div&gt;</summary>
		<author><name>Abel0202adJc</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Usuario:Abel0202adJc&amp;diff=443485</id>
		<title>Usuario:Abel0202adJc</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Usuario:Abel0202adJc&amp;diff=443485"/>
		<updated>2011-03-23T18:02:10Z</updated>

		<summary type="html">&lt;p&gt;Abel0202adJc: Página creada con '{{Usuario|usuario=Abel0202adJc |imagen=ecua2r.jpg.JPG |apellidos=Chávez Agüero|nombre=Abel|estudio=Nivel Superior|título=Ingeniero en Ciencias Informáticas|postgrado= |temas...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Usuario|usuario=Abel0202adJc&lt;br /&gt;
|imagen=ecua2r.jpg.JPG&lt;br /&gt;
|apellidos=Chávez Agüero|nombre=Abel|estudio=Nivel Superior|título=Ingeniero en Ciencias Informáticas|postgrado= |temas=Recursividad en C++, Algoritmos de Planificación de Procesos en Sistemas Operativos, Métodos criptográficos|institución=JCCE|país=Cuba}}&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Descripción  ==&lt;br /&gt;
&lt;br /&gt;
Abel Chávez Agüero, graduado de Ingeniero en Ciencias Informáticas en la Universidad de las Ciencias Informáticas en La Habana en el año 2009. Actualmente cumplo mi período de adiestramiento en el&amp;amp;nbsp; Joven Club de Computación y Electrónica&amp;amp;nbsp;Puerto Padre 2 del Municipio Puerto Padre, Las Tunas.&lt;br /&gt;
&lt;br /&gt;
== Contribuciones&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
== Proyectos &amp;lt;br&amp;gt;  ==&lt;/div&gt;</summary>
		<author><name>Abel0202adJc</name></author>
		
	</entry>
</feed>