Entradas

Mostrando las entradas etiquetadas como Recursión

Algoritmos de búsqueda más conocidos

Imagen
Los algoritmos de búsqueda son herramientas esenciales en la resolución eficiente de problemas en diversos campos, desde la informática y la ingeniería hasta la toma de decisiones y la optimización. Su importancia radica en su capacidad para encontrar información, tomar decisiones óptimas y mejorar el rendimiento en una amplia variedad de aplicaciones. 7 algoritmos comunes de búsqueda de elementos en un arreglo 1. Búsqueda lineal (Linear Search): Descripción: Este algoritmo recorre secuencialmente el arreglo, comparando cada elemento con el valor buscado hasta que se encuentre o se llegue al final del arreglo. Ventajas: Es simple y fácil de implementar. Funciona en cualquier tipo de arreglo, ya sea ordenado o desordenado. Desventajas: Tiene una complejidad de tiempo promedio y peor caso de O(n), donde "n" es el tamaño del arreglo. Es menos eficiente para arreglos grandes, ya que puede requerir comparaciones con todos los elementos. 2. Búsqueda binaria ( Binary Search ): Descr

Haskell: lenguaje de programación funcional

Haskell es un lenguaje utilizado en una variedad de contextos y plataformas debido a su enfoque funcional, su sistema de tipos fuerte y a su capacidad para abordar problemas complejos de manera elegante y segura. Programación funcional con Haskell Se trata de un lenguaje de programación funcional, puro y de propósito general. Fue creado por un comité de investigadores, liderado por Simon Peyton Jones y Philip Wadler, con la colaboración de otros en 1990. Haskell se basa en el cálculo lambda, que es un sistema formal desarrollado en la década de 1930 para estudiar las funciones matemáticas y su computabilidad. El cálculo lambda es una piedra angular en el campo de la teoría de la computación y ha sido una influencia significativa en el diseño de lenguajes de programación funcionales. Una de las características más distintivas de Haskell es su enfoque en la programación funcional pura, lo que significa que evita el cambio de estado y las operaciones con efectos secundarios. Esto ayuda a

Programa para reducir una fracción dada X/Y

En un libro sobre algoritmos, un problema básico es el siguiente: “escribe un programa para reducir una fracción dada x/y (con números x, y enteros) a sus términos más simples”. Piden que el programa sea hecho en Pascal y en C++. Programa en Pascal: Program ReduceFraction; Function GCD(a, b: integer): integer; begin   if b = 0 then     Result := a   else     Result := GCD(b, a mod b); end; Procedure ReduceFraction(var numerator, denominator: integer); var   gcd1: integer; begin   gcd1 := GCD(numerator, denominator);   numerator := numerator div gcd1;   denominator := denominator div gcd1; end; var   x, y: integer; Begin     writeln('Ingrese el numerador (x): ');     readln(x);     writeln('Ingrese el denominador (y): ');     readln(y);     ReduceFraction(x, y);     writeln('La fraccion reducida es: ', x, '/', y);     readln; End. Programa en C++: #include <iostream> int GCD(int a, int b) {     return (b == 0) ? a : GCD(b, a % b); } void ReduceFract

Conceptos fundamentales en programación. ¡Algunos...😉!

En este post encuentras un grupo de conceptos - tomados al azar - fundamentales en programación, que debemos dominar para adentrarnos en la construcción de algoritmos que pueden ser ejecutados por un computador u ordenador. La acción "programar computadoras" no es más que escribir código para “decirle” a una máquina lo que tiene que hacer. Es una habilidad esencial en el mundo actual, dado que la tecnología está cada vez más integrada en nuestras vidas. Hay muchas razones por las que aprender a programar es importante. Aquí hay algunas de ellas: Las oportunidades laborales son abundantes. La demanda de programadores está creciendo rápidamente, y los salarios son altos. Según el Foro Económico Mundial, la programación es una de las habilidades más demandadas en la actualidad. La posibilidad de resolver problemas. La programación te enseña a pensar lógicamente y a resolver problemas de forma creativa. Estas son habilidades valiosas que se pueden aplicar a cualquier campo, más a

Algoritmos de ordenación y análisis de eficiencia

Imagen
La importancia de los algoritmos de ordenación no se discute. ¡Tienen gran importancia dentro de la Ciencia de la Computación!, dado que una buena cantidad de los procesos realizados por medios computacionales requieren que sus datos estén ordenados. Por lo tanto, en este post quiero compartir un material que resume diversos métodos de ordenación (estudiados ampliamente) y el análisis de su complejidad, tema clave para los programadores que aspiran transitar hacia las “grandes ligas”. Dado un conjunto de n elementos a1, a2,..., an y una relación de orden total (≤ ) sobre ellos, el problema de la ordenación consiste en encontrar una permutación de esos elementos ordenada de forma creciente. Aunque tanto el tipo y tamaño de los elementos como la “estructura” y el dispositivo en donde se encuentran almacenados puede influir en el método que utilicemos para ordenarlos, a efectos de la explicación que presenta el material compartido, simplemente, se utiliza un vector (arreglo simple, uni

Función recursiva (Sucesión de Fibonacci)

Imagen
Sucesión de Fibonacci La  Sucesión de Fibonacci es una secuencia infinita de números naturales cuyos dos primeros términos son 1 y 1, y tal que, cualquier otro término se obtiene sumando los dos inmediatamente anteriores. De manera explícita, la sucesión es como sigue: 1, 1, 2, 3, 5, 8, 13, 21, 34… La definición formal es la siguiente: Esta sucesión la podemos programar aplicando el concepto de recursión en, por ejemplo, una función (entera con parámetro N) como la siguiente: Ejemplos de algoritmos recursivos: Algoritmo recursivo para determinar si una frase es Palíndromo Ejemplo de algoritmo recursivo: Raíz Cuadrada

Algoritmo recursivo para determinar si una frase es Palíndromo

¿Qué es p alíndromo? Es una palabra o frase que se lee igual de izquierda a derecha, que de derecha a izquierda. Ejemplos: anilina;  dábale arroz a la zorra el abad ; Somos o no somos. Aplicando el concepto de "recursividad" podemos escribir una función que determine si una cadena es o no palíndromo . Asumiendo que la función fRecP recibe una cadena (en una estructura de datos tipo "arreglo") y los límites izquierdo y derecho la primera vez que se invoca, un algoritmo recursivo para determinar si la cadena es palíndromo puede ser este: Función fRecP   ( Cadena   C,  int   limIzq ,  int   limDer ): lógica     Si   ( limIzq  >  limDer)     entonces       fRecP =   verdadero     de lo contrario        Si   C[ limIzq ] = C[ limDer ]   entonces              fRecP (C , limIzq+1, limDer-1)        de lo contrario             fRecP =  falso       Fin    Fin Fin fRecP Otro ejemplo de recursividad: Ejemplo de algoritmo recursivo: Raíz Cuadrada Documento sobre Recursividad

Ejemplo de algoritmo recursivo: Raíz Cuadrada

Imagen
Raíz Cuadrada (RC) de un número real positivo: La secuencia iterativa para la RC de  Y  es:     X(n+1) = 1/2 * [ X(n) + Y / X(n) ] . Para Y < 1, un valor de inicio es:  1/2 * ( 1 + Y ) RC(Y) = S ( Y, 1/2 * ( 1 + Y ) ) Con S(Y,X) = [ (Y/X - X) <  epsilon →  X;   S ( Y, 1/2 * ( X + Y/X ) ) ] La definición  recursiva  para la RC(Y) es: Función en MsExcel ( descargar y probar ). Un algoritmo  recursivo  para calcular la RC de Y es el siguiente: Dados el valor inicial de X = 1/2 * ( 1 + Y ) y un valor para E ( epsilon ), la función recursiva es como sigue:         Función RaizC ( Y, X): real              Si (  ( Y/X - X) < E )  entonces                   RaizC := X              De lo contrario                   RaizC ( Y,  1/2 * ( X + Y/X )  )       {la función se invoca a sí misma}              Fin del Si         Fin de la función RaizC Y para que tengas otro ejemplo, estudie este simple programa en Pascal:          Program ParImpar;          Uses CRT;          Var