Entendiendo la recursión

Entendiendo la recursión

Villegas Jaramillo, Eduardo / Guerrero Medina, Luz Enith

$ 30,000.00
En stock
Editorial:
Universidad Nacional de Colombia
Año de edición:
2020
Materia
Ingeniería de sistemas
ISBN:
978-958-794-006-0
Páginas:
226
Encuadernación:
Rústica
$ 30,000.00
En stock
Añadir a favoritos

Contenido

Introducción 15

Parte 1. Conceptos 17 Definiciones 19 Esquema de una solución recursiva 25 Introducción 25 Pensando de forma recursiva 26 El problema de calcular la cantidad de cifras de un número dado 28 El problema de determinar si un número es par 29 El problema de determinar si un número es primo 30 El problema de calcular el residuo de la división entre dos números 32 El problema de calcular la suma de los números entre uno y un número dado 32 Ejemplos 34 Calcular el factorial de un número entero positivo 35 Calcular la potencia de dos números enteros positivos 37 Calcular la potencia de forma más eficiente 38 Calcular un término dado de la serie de Fibonacci 39 Calcular el máximo común divisor de dos números enteros 40 Calcular la suma de dos números enteros positivos 42 Ejercicios propuestos 43 Funcionamiento de la recursión 47 Introducción 47 Acciones que se realizan 47 Ejemplo práctico 49 Tiempos de ejecución 62 Clases de recursión 63 Recursión lineal o simple 63 Recursión lineal de cola 64 Recursión lineal no de cola 65 Recursión directa 65 Recursión indirecta, mutua o cruzada 66 Recursión múltiple 68 Recursión versus iteración 71 Problemática 71 Ventajas y desventajas de utilizar recursión 75 Ventajas que presenta el uso de la recursión 76 Desventajas del uso de la recursíón 76 Eliminación de la recursión 79 Eliminar recursión lineal de cola 79 Eliminar recursión lineal no de cola 82 Eliminar recursión no lineal de cola 85 Eliminar recursión no lineal no de cola 87


Parte 2. Solución de problemas 91 Manejo de arreglos 93 Definiciones 93 Arreglos de una dimensión - vectores 93 Ejercicios resueltos con vectores 95 Mostrar recursivamente el contenido de un arreglo o vector en orden inverso (desde el último hasta el primero) 95 Mostrar recursivamente el contenido de un arreglo en orden normal o directo (desde el primero hasta el último) 96 Sumar recursivamente el contenido de un vector de números enteros utilizando un acumulador y recorriendo el arreglo en orden inverso (del último al primer elemento) 97 Sumar recursivamente el contenido de un vector de números enteros sin acumulador y recorriendo el arreglo en orden inverso (desde el último hasta el primer elemento) 98 Invertir recursivamente el contenido de un vector que contiene números enteros 99 Encontrar de forma recursiva el mayor elemento de un arreglo conformado por números enteros recorriendo desde el último hasta el primer elemento 100 Determinar recursivamente si un vector que contiene los dígitos de un número cumple con las características de capicúa (que se lee igual de izquierda a derecha que de derecha a izquierda) 101 Manejo de arreglos de dos dimensiones - matrices 102 Ejercicios resueltos con matrices 104 Mostrar recursivamente el contenido de una matriz 104 Calcular recursivamente la traza de una matriz que contiene números enteros (suma de los elementos de la diagonal principal) 106 Sumar recursivamente el contenido de una matriz con números enteros 107 Calcular la matriz transpuesta de una matriz dada que contiene números enteros 108 Ejercicios propuestos 110 El problema de la búsqueda 111 Introducción 111 Búsqueda recursiva desde el final del arreglo 111 Búsqueda recursiva desde el principio del arreglo incrementando el índice de búsqueda en uno hasta llegar a su final 113 Búsqueda binaria en un arreglo no ordenado 114 Búsqueda binaria en un arreglo ordenado ascendentemente 116 El problema de los ordenamientos 119 Introducción 119 Ordenamiento por burbuja 119 Ordenamiento por intercambio 121 Ordenamiento por inserción 124 Ordenamiento rápido 125 Ordenamiento por mezcla 128 Ordenamiento por montículo 131 Programación dinámica 135 Introducción 135 Forma general 136 Problemas resueltos 137 Calcular el factorial de un número entero positivo 137 Calcular el n-ésimo término de la serie de Fibonacci 138 Cálculo del coeficiente binomial 140 Cálculo de la potencia de dos números enteros positivos 142 Calcular los factores primos de un número entero positivo 143 Ejercicios propuestos 146 Técnica de vuelta atrás o retroceso 149 Introducción 149 Forma general 150 Problemas resueltos 151 Subconjuntos de un conjunto 151 Encontrar todos los subconjuntos que sumen un valor dado 153 Hallar todas las permutaciones de un conjunto de números enteros 155 Acomodar ocho (8) reinas en un tablero de ajedrez de tal manera que no se ataquen unas a otras 157 El juego del sudoku 164 Ejercicios propuestos 168 Manejo de árboles binarios y grafos 171 Introducción 171 Definiciones 172 Representación 173 Representación de árboles binarios con arreglos 174 Representación de árboles con listas 176 Representación de grafos con matrices 176 Recorridos en un árbol binario 178 Recorrido en entre orden 178 Recorrido en preorden 179 Recorrido en posorden 180 Recorrido por niveles 181 Árboles binarios de búsqueda 183 Problemas resueltos con árboles y grafos 183 Cálculo de la altura de un árbol binario 183 Cálculo de la suma de los valores almacenados en los nodos de un árbol binario 185 Cálculo del mayor elemento de un árbol binario 186 Contabilizar el número de nodos de un árbol binario 186 Determinar si un árbol binario está balanceado 187 Coloreado de mapas 188 Búsqueda de caminos en un laberinto 194 Ejercicios propuestos 199 Técnica de divide y vencerás 201 Introducción 201 Forma general 202 Problemas resueltos 202 Las torres de Hanói 202 Determinar si un valor dado está almacenado en un árbol binario de búsqueda 205 Encontrar el máximo en un conjunto de n números 206 Dada una secuencia de n números enteros, encontrar el máximo valor que se puede obtener al sumar elementos consecutivos de la secuencia 209 Ejercicios propuestos 214 Referencias 215 Anexos 217 Anexo 1. Lenguaje algorítmico 217 Anexo 2. Implementación de la estructura de datos: pila 220 índice temático 223

La intención de escribir este libro es la de ayudar a las diferentes personas que, estando en el mundo de la programación de computadores, se enfrentan a resolver problemas mediante el concepto de la recursión. Esta palabra, que por sí sola asusta a muchos de quienes la abordan, de verdad es un gran instrumento que permite resolver innumerables problemas de una forma mucho más simple que al hacerlo iterativamente con otro tipo de estrategias y conceptos.

El tema lo planteamos luego de más de veinticinco (25) años de experiencia en el proceso de enseñanza-aprendizaje de asignaturas relacionadas con la programación de computadores, tiempo en el cual encontramos que aplicar recursión a la solución de problemas implica algo más que saber programar, incluye un componente de lógica que permite no solo el entendimiento del problema, sino la forma de expresar una o varias soluciones en términos recursivos. En los cursos impartidos hemos encontrado que la mayoría de los estudiantes no entienden el concepto, y que la sola palabra ya produce cierto bloqueo mental al tratar de solucionar un problema. Por esta y muchas otras razones consideramos que es importante hacer especial énfasis en que los estudiantes y amantes de la programación entiendan, apliquen y hagan un buen uso de los conceptos que involucra la recursión.

Todo programador se debe enfrentar a los diferentes paradigmas que tiene la programación, y siempre serán estos conceptos los que le permitan desarrollar habilidades y destrezas que con el apoyo de las teorías matemáticas le hagan posible llegar a resolver un número considerable de problemas de diferente dificultad y complejidad.

En este libro se plantea el concepto de recursión a partir de su origen, sus usos y aplicaciones, de manera que permita a quienes lo lean llegar a establecer las diferentes estrategias que de allí se derivan y que posibilitarán la solución de muchos problemas.

Artículos relacionados

  • Php 8
    Morales, Italo
    PHP es un lenguaje de programación que definitivamente ha ayudado mucho al mundo. Millones de programadores lo usan para crear una gran variedad de soluciones reales y útiles ya que la evolución del lenguaje se debe a que PHP no reinventa la rueda, se tiene como principio tomar las mejores ideas y funciones de otras tecnologías, implementarlas y en algunos casos mejorarlas. En ...
    En stock

    $ 39,000.00

  • Desarrollo de interfaces gráficas en Python 3 con Tkinter
    Domínguez Mínguez, Tomás
    Las interfaces de usuario son el medio de interacción entre las aplicaciones y las personas. Dependiendo de la forma en la que se lleve a cabo esta comunicación, se distinguen diferentes tipos: desde las de línea de comandos (en las que el intercambio de información se realiza utilizando únicamente texto), pasando por las interfaces gráficas, hasta las sofisticadas interfaces d...
    En stock

    $ 104,000.00

  • Javascript
    Orós, Juan Carlos
    Esta obra está dirigida a todas aquellas personas que quieran aprender a programar con JavaScript. El libro es ante todo un texto práctico que explica mediante numerosos ejemplos los principales elementos del lenguaje.Se recomienda tener conocimientos básicos de HTML y del entorno de programación web para poder seguir sin problemas este curso. No obstante, la orientación de los...
    En stock

    $ 68,000.00

  • Terraform
    Espinoza, Amín
    La constante evolución de los entornos de software no es ninguna sorpresa para nadie involucrado en todo este mundo. Llevo ya 12 años trabajando como profesional y en esta pequeña fracción de la historia de la tecnología me da mucha risa recordar el hardware con el que trabajaba en la universidad, recordar versiones de los sistemas operativos que usaba y con un nivel no menor d...
    En stock

    $ 75,000.00

  • Introducción al Machine Learning con Matlab
    Perez, Marco / Avalos, Omar / Valdivia Primitivo, Arturo
    El Machine Learning representa una herramienta importante para la exploracion y la extraccion de conocimiento. Su principal objetivo es construir modelos que permitan describir posibles patrones estructurales en la informacion a partir de las datos, con el objetivo de tomar decisiones o hacer predicciones.En la ultima decada, el numero de usuarios de Machine Learning ha crecido...
    En stock

    $ 54,000.00

  • Unvirtuallab un laboratorio virtual basado en openmodelica
    Duarte, Oscar.
    VERSION EBOOK ...
    En stock

    $ 110,000.00