fbpx
Wikipedia

Recursión

Recursión o recursividad es la forma en la cual se específica un proceso basado en su propia definición.[1]​ La recursión tiene esta característica discernible en términos de autorreferencialidad, autopoiesis, fractalidad, o, en otras palabras, construcción a partir de un mismo tipo. Con ánimo de una mayor precisión, y para evitar la aparente circularidad en esta definición, se formula el concepto de recursión de la siguiente manera:

Anuncio de cacao con una imagen recursiva. La mujer muestra un paquete idéntico al del propio anuncio, conteniendo así a otra mujer que muestra otro paquete más pequeño, de forma recursiva.
Imagen recursiva formada por un triángulo de Sierpinski. Cada triángulo está compuesto de otros, compuestos a su vez de la misma estructura recursiva.

Un problema que pueda ser definido en función de su tamaño, sea este N, pueda ser dividido en instancias más pequeñas (< N) del mismo problema y se conozca la solución explícita a las instancias más simples, lo que se conoce como casos base, se puede aplicar inducción sobre las llamadas más pequeñas y suponer que estas quedan resueltas.

Para que se entienda mejor a continuación se exponen algunos ejemplos:

  • Factorial: Se desea calcular (el factorial de , que se define como el producto de todos los enteros positivos de a ). Se puede definir el problema de forma recurrente como ; como es menor que podemos aplicar inducción por lo que disponemos del resultado. El caso base es que es .
  • Algoritmo de ordenación por fusión: Sea v un vector de n elementos, podemos separar el vector en dos mitades. Estas dos mitades tienen tamaño n/2 por lo que, por inducción, podemos aplicar la ordenación en estos dos subproblemas. Una vez tenemos ambas mitades ordenadas simplemente debemos fusionarlas. El caso base es ordenar un vector de cero o un elemento, que está trivialmente ordenado y no hay que hacer nada.

En estos ejemplos podemos observar como un problema se divide en varias (una o más) instancias del mismo problema, pero de tamaño menor gracias a lo cual se puede aplicar inducción, llegando a un punto donde se conoce el resultado (el caso base).

Recursión en matemáticas

Conjuntos definidos de forma recurrente

Un ejemplo de conjunto definido de forma recurrente es el de los números naturales, es decir, el conjunto de los números enteros no negativos:[2]

  1.   pertenece a ℕ.
  2. Si   pertenece a ℕ, entonces   pertenece a ℕ.
  3. Si   verifica las anteriores condiciones, entonces   está incluido en ℕ [cita requerida].

Funciones definidas de forma recurrente

Aquellas funciones cuyo dominio es un conjunto a lo más enumerable [3]​ pueden ser definidas de forma recurrente.

Un ejemplo conocido es la definición recurrente de la función factorial n!:

 

Veamos cómo se usa esta definición para hallar el valor del factorial de 3:

 

Otros ejemplos de funciones y sucesiones matemáticas definidas de forma recursiva son:

Constantes

La razón áurea se puede definir de forma recursiva, como una fracción continua en que todos los números son unos:

 .

De forma similar, la identidad   da lugar a una definición como fracción continua de cualquier raíz cuadrada:[4]

 

Resolución de problemas

Resolución de ecuaciones homogéneas de primer grado, segundo orden:

a) Se pasan al primer miembro los términos  ,  ,  , los cuales también podrían figurar como  ,  ,  

b) Se reemplaza   por  ,   por   y   por  , quedando una ecuación de segundo grado con raíces reales y distintas   y  .

c) Se plantea  

d) Debemos tener como dato los valores de los dos primeros términos de la sucesión:   y  . Utilizando estos datos ordenamos el sistema de 2x2:

 

La resolución de este sistema nos da como resultado los valores   y  , que son números reales conocidos.

e) La solución general es:

 

Recursión en informática

En programación, un método usual de simplificación de un problema complejo es la división de este en subproblemas del mismo tipo. Esta técnica de programación se conoce como divide y vencerás y es el núcleo en el diseño de numerosos algoritmos de gran importancia, así como también es parte fundamental de la programación dinámica.

Implementación en C:

int factorial (int n) { if (n > 1) { return n * factorial(n-1); }else { return 1; } } int main() { printf("Recusividad\n"); int result = factorial(5); printf("El resultado es: %i", result); return 0; } 

Implementación en C++:

 int factorial(int x) { if (x > -1 && x < 2) return 1; // Cuando -1 < x < 2 devolvemos 1 puesto que 0! = 1 y 1! = 1 else if (x < 0) return 0; // Error no existe factorial de números negativos return x * factorial(x - 1); // Si x >= 2 devolvemos el producto de x por el factorial de x - 1 } 

Implementación en Pascal:

 FUNCTION Factorial (CONST N: INTEGER): INTEGER; BEGIN IF N > 1 THEN Factorial := N * (Factorial (N - 1)); ELSE BEGIN IF ((N=0) OR (N=1)) Factorial := 1; ELSE Factorial := 0; END; END; END; 

Implementación en Python[5]​:

def factorial(n): if n == 1 or n == 0: return 1 else: return n * factorial(n-1) 

El seguimiento de la recursividad programada es casi exactamente igual a los ejemplos antes dados, para intentar ayudar a que se entienda mejor se ha acompañado con muchas explicaciones y con colores que diferencia los distintos sub-procesos de la recursividad.

X = 3 //Queremos 3!, por lo tanto X inicial es 3 X >= 2 -> return 3*factorial(2); X = 2 //Ahora estamos solicitando el factorial de 2 X >= 2 -> return 2*factorial(1); X = 1 // Ahora estamos solicitando el factorial de 1 X < 2 -> return 1; [En este punto tenemos el factorial de 1 por lo que volvemos marcha atrás resolviendo todos los resultados] return 2 [es decir: return 2*1 = return 2*factorial(1)] return 6 [es decir: return 3*2 = return 3*factorial(2)*factorial(1)] // El resultado devuelto es 6 

Humor recursivo

La recursividad se emplea a menudo de forma humorística en textos informáticos, filosóficos o matemáticos. No es raro que un libro de texto de estas disciplinas incluya en su glosario una entrada similar a esta:

Recursividad, véase Recursividad.[6]

En el buscador Google, al buscar «recursión», el sitio sugiere «Quizá quisiste decir: recursión».[7]

Un chiste informático dice así«:Lo primero para entender la recursividad, es entender la recursividad».[6]​ En la informática también es común la elección de acrónimos recursivos. PHP son las iniciales de PHP Hypertext Preprocessor (Preprocesador de Hipertexto PHP), WINE son las de WINE Is Not an Emulator (WINE no es un emulador) y GNU significa GNU's Not Unix (GNU no es Unix).

Véase también

Referencias

  1. «Recursión» |url= incorrecta con autorreferencia (ayuda). Wikipedia, la enciclopedia libre. 27 de diciembre de 2017. Consultado el 26 de marzo de 2018. 
  2. Algunos autores consideran que los números naturales son los números enteros positivos, es decir, excluyen el 0 de este conjunto. En ese caso, basta sustituir la línea que dice «  pertenece a ℕ» por «  pertenece a ℕ».
  3. «Nociones de espacios normados» , Cotlar y Cignoli, Eudeba, Buenos Aires
  4. Ben Thurston, "Estimating square roots, generalized continued fraction expression for every square root", The Ben Paul Thurston Blog
  5. El Libro de Python. «La recursividad, intentando crear funciones recursivas sin crear un agujero negro». El Libro de Python. Consultado el 30 de abril de 2020. 
  6. Hunter, David (2011). Essentials of Discrete Mathematics. Jones and Bartlett. p. 494. 
  7. Daniel Rodríguez Herrera (29 de julio de 2009). «¿Qué es la recursividad? ¿Qué es la recursividad? ¿Qué es la recursividad?...». Libertad Digital. Consultado el 20 de enero de 2013. 

Enlaces externos

  • Ejemplo de curvas recursivas fractales
  •   Datos: Q179976
  •   Multimedia: Recursion

recursión, recursividad, forma, cual, específica, proceso, basado, propia, definición, recursión, tiene, esta, característica, discernible, términos, autorreferencialidad, autopoiesis, fractalidad, otras, palabras, construcción, partir, mismo, tipo, ánimo, may. Recursion o recursividad es la forma en la cual se especifica un proceso basado en su propia definicion 1 La recursion tiene esta caracteristica discernible en terminos de autorreferencialidad autopoiesis fractalidad o en otras palabras construccion a partir de un mismo tipo Con animo de una mayor precision y para evitar la aparente circularidad en esta definicion se formula el concepto de recursion de la siguiente manera Anuncio de cacao con una imagen recursiva La mujer muestra un paquete identico al del propio anuncio conteniendo asi a otra mujer que muestra otro paquete mas pequeno de forma recursiva Imagen recursiva formada por un triangulo de Sierpinski Cada triangulo esta compuesto de otros compuestos a su vez de la misma estructura recursiva Un problema que pueda ser definido en funcion de su tamano sea este N pueda ser dividido en instancias mas pequenas lt N del mismo problema y se conozca la solucion explicita a las instancias mas simples lo que se conoce como casos base se puede aplicar induccion sobre las llamadas mas pequenas y suponer que estas quedan resueltas Para que se entienda mejor a continuacion se exponen algunos ejemplos Factorial Se desea calcular n displaystyle n el factorial de n displaystyle n que se define como el producto de todos los enteros positivos de 1 displaystyle 1 a n displaystyle n Se puede definir el problema de forma recurrente como n n 1 displaystyle n n 1 como n 1 displaystyle n 1 es menor que n displaystyle n podemos aplicar induccion por lo que disponemos del resultado El caso base es 0 displaystyle 0 que es 1 displaystyle 1 Algoritmo de ordenacion por fusion Sea v un vector de n elementos podemos separar el vector en dos mitades Estas dos mitades tienen tamano n 2 por lo que por induccion podemos aplicar la ordenacion en estos dos subproblemas Una vez tenemos ambas mitades ordenadas simplemente debemos fusionarlas El caso base es ordenar un vector de cero o un elemento que esta trivialmente ordenado y no hay que hacer nada En estos ejemplos podemos observar como un problema se divide en varias una o mas instancias del mismo problema pero de tamano menor gracias a lo cual se puede aplicar induccion llegando a un punto donde se conoce el resultado el caso base Indice 1 Recursion en matematicas 1 1 Conjuntos definidos de forma recurrente 1 2 Funciones definidas de forma recurrente 1 3 Constantes 1 4 Resolucion de problemas 2 Recursion en informatica 3 Humor recursivo 4 Vease tambien 5 Referencias 6 Enlaces externosRecursion en matematicas EditarConjuntos definidos de forma recurrente Editar Un ejemplo de conjunto definido de forma recurrente es el de los numeros naturales es decir el conjunto de los numeros enteros no negativos 2 0 displaystyle 0 pertenece a ℕ Si n displaystyle n pertenece a ℕ entonces n 1 displaystyle n 1 pertenece a ℕ Si x displaystyle x verifica las anteriores condiciones entonces x displaystyle x esta incluido en ℕ cita requerida Funciones definidas de forma recurrente Editar Aquellas funciones cuyo dominio es un conjunto a lo mas enumerable 3 pueden ser definidas de forma recurrente Un ejemplo conocido es la definicion recurrente de la funcion factorial n n si n 0 1 si n 1 n n 1 displaystyle n begin cases mbox si n 0 amp Rightarrow 1 mbox si n geq 1 amp Rightarrow n n 1 end cases Veamos como se usa esta definicion para hallar el valor del factorial de 3 3 3 3 1 3 2 3 2 2 1 3 2 1 3 2 1 1 1 3 2 1 0 3 2 1 1 6 displaystyle begin aligned 3 amp 3 cdot 3 1 amp 3 cdot 2 amp 3 cdot 2 cdot 2 1 amp 3 cdot 2 cdot 1 amp 3 cdot 2 cdot 1 cdot 1 1 amp 3 cdot 2 cdot 1 cdot 0 amp 3 cdot 2 cdot 1 cdot 1 amp 6 end aligned Otros ejemplos de funciones y sucesiones matematicas definidas de forma recursiva son Sucesion de Fibonacci f 0 1 f 1 1 f n f n 1 f n 2 para n 2 Numeros de Catalan C 2n n n 1 Funcion de AckermannConstantes Editar La razon aurea se puede definir de forma recursiva como una fraccion continua en que todos los numeros son unos ϕ 1 1 ϕ 1 1 1 1 1 1 1 displaystyle phi 1 frac 1 phi 1 cfrac 1 1 cfrac 1 1 cfrac 1 1 De forma similar la identidad x 1 x 1 1 x displaystyle sqrt x 1 frac x 1 1 sqrt x da lugar a una definicion como fraccion continua de cualquier raiz cuadrada 4 x 1 x 1 2 x 1 2 x 1 2 displaystyle sqrt x 1 cfrac x 1 2 cfrac x 1 2 cfrac x 1 2 ddots Resolucion de problemas Editar Resolucion de ecuaciones homogeneas de primer grado segundo orden a Se pasan al primer miembro los terminos a n displaystyle a n a n 1 displaystyle a n 1 a n 2 displaystyle a n 2 los cuales tambien podrian figurar como a n 2 displaystyle a n 2 a n 1 displaystyle a n 1 a n displaystyle a n b Se reemplaza a n displaystyle a n por r 2 displaystyle r 2 a n 1 displaystyle a n 1 por r displaystyle r y a n 2 displaystyle a n 2 por 1 displaystyle 1 quedando una ecuacion de segundo grado con raices reales y distintas r 1 displaystyle r 1 y r 2 displaystyle r 2 c Se plantea a u r 1 n v r 2 n displaystyle a u r 1 n v r 2 n d Debemos tener como dato los valores de los dos primeros terminos de la sucesion A 0 k displaystyle A 0 k y A 1 k displaystyle A 1 k prime Utilizando estos datos ordenamos el sistema de 2x2 u v k u r 1 u r 2 k displaystyle begin cases u v k u r 1 u r 2 k prime end cases La resolucion de este sistema nos da como resultado los valores u 0 displaystyle u 0 y v 0 displaystyle v 0 que son numeros reales conocidos e La solucion general es a n u 0 r 1 n v 0 r 2 n displaystyle a n u 0 r 1 n v 0 r 2 n Recursion en informatica EditarArticulo principal Recursion ciencias de computacion En programacion un metodo usual de simplificacion de un problema complejo es la division de este en subproblemas del mismo tipo Esta tecnica de programacion se conoce como divide y venceras y es el nucleo en el diseno de numerosos algoritmos de gran importancia asi como tambien es parte fundamental de la programacion dinamica Implementacion en C int factorial int n if n gt 1 return n factorial n 1 else return 1 int main printf Recusividad n int result factorial 5 printf El resultado es i result return 0 Implementacion en C int factorial int x if x gt 1 amp amp x lt 2 return 1 Cuando 1 lt x lt 2 devolvemos 1 puesto que 0 1 y 1 1 else if x lt 0 return 0 Error no existe factorial de numeros negativos return x factorial x 1 Si x gt 2 devolvemos el producto de x por el factorial de x 1 Implementacion en Pascal FUNCTION Factorial CONST N INTEGER INTEGER BEGIN IF N gt 1 THEN Factorial N Factorial N 1 ELSE BEGIN IF N 0 OR N 1 Factorial 1 ELSE Factorial 0 END END END Implementacion en Python 5 def factorial n if n 1 or n 0 return 1 else return n factorial n 1 El seguimiento de la recursividad programada es casi exactamente igual a los ejemplos antes dados para intentar ayudar a que se entienda mejor se ha acompanado con muchas explicaciones y con colores que diferencia los distintos sub procesos de la recursividad X 3 Queremos 3 por lo tanto X inicial es 3 X gt 2 gt return 3 factorial 2 X 2 Ahora estamos solicitando el factorial de 2 X gt 2 gt return 2 factorial 1 X 1 Ahora estamos solicitando el factorial de 1 X lt 2 gt return 1 En este punto tenemos el factorial de 1 por lo que volvemos marcha atras resolviendo todos los resultados return 2 es decir return 2 1 return 2 factorial 1 return 6 es decir return 3 2 return 3 factorial 2 factorial 1 El resultado devuelto es 6Humor recursivo EditarLa recursividad se emplea a menudo de forma humoristica en textos informaticos filosoficos o matematicos No es raro que un libro de texto de estas disciplinas incluya en su glosario una entrada similar a esta Recursividad vease Recursividad 6 En el buscador Google al buscar recursion el sitio sugiere Quiza quisiste decir recursion 7 Un chiste informatico dice asi Lo primero para entender la recursividad es entender la recursividad 6 En la informatica tambien es comun la eleccion de acronimos recursivos PHP son las iniciales de PHP Hypertext Preprocessor Preprocesador de Hipertexto PHP WINE son las de WINE Is Not an Emulator WINE no es un emulador y GNU significa GNU s Not Unix GNU no es Unix Vease tambien EditarRecursion ciencias de computacion Algoritmo recursivo Fractal Sistema L Torres de Hanoi Relacion de recurrencia Iteracion MetaficcionReferencias Editar Recursion url incorrecta con autorreferencia ayuda Wikipedia la enciclopedia libre 27 de diciembre de 2017 Consultado el 26 de marzo de 2018 Algunos autores consideran que los numeros naturales son los numeros enteros positivos es decir excluyen el 0 de este conjunto En ese caso basta sustituir la linea que dice 1 displaystyle 1 pertenece a ℕ por 1 displaystyle 1 pertenece a ℕ Nociones de espacios normados Cotlar y Cignoli Eudeba Buenos Aires Ben Thurston Estimating square roots generalized continued fraction expression for every square root The Ben Paul Thurston Blog El Libro de Python La recursividad intentando crear funciones recursivas sin crear un agujero negro El Libro de Python Consultado el 30 de abril de 2020 a b Hunter David 2011 Essentials of Discrete Mathematics Jones and Bartlett p 494 Daniel Rodriguez Herrera 29 de julio de 2009 Que es la recursividad Que es la recursividad Que es la recursividad Libertad Digital Consultado el 20 de enero de 2013 Enlaces externos EditarEjemplo de curvas recursivas fractales Datos Q179976 Multimedia RecursionObtenido de https es wikipedia org w index php title Recursion amp oldid 137201592, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos