recursión

Ejecución de Quicksort en C

Quicksort en C: implementación de algoritmo

Ordenar arreglo con Quicksort en C: en este post voy a mostrarte cómo implementar el algoritmo de ordenamiento rápido o quicksort en ANSI C.

Este algoritmo destaca porque es uno de los más rápidos al momento de ordenar arreglos, además de que el mismo no ocupa arreglos temporales, simplemente intercambia variables y utiliza el método de divide y vencerás.

Ejecución de Quicksort en C

Al final podremos ordenar arreglos usando el algoritmo Quicksort en C.

Continue reading…

Fibonacci recursivo y con ciclos en Java

Sucesión fibonacci en Java: método iterativo y recursivo

En este artículo voy a explicar cómo imprimir la sucesión fibonacci en Java, y también expondré dos métodos para obtener el número fibonacci que iría en determinada posición.

Declararemos dos funciones: una iterativa o con ciclos y otra que utiliza recursión o recursividad para llamarse a sí misma.

Fibonacci recursivo y con ciclos en Java

Fibonacci recursivo y con ciclos en Java

Veamos entonces cómo implementar el algoritmo para la secuencia fibonacci en Java.

Continue reading…

Factorial con recursión y ciclo while en Java

Factorial recursivo e iterativo en Java

Hoy veremos dos formas de calcular el factorial en Java. La primera utiliza un ciclo while para obtener el factorial de un número, y la segunda utiliza recursividad o recursión.

Factorial con recursión y ciclo while en Java

Factorial con recursión y ciclo while en Java

Esas dos maneras para sacar el factorial las pondremos en unas funciones separadas que recibirán un dato de tipo long y devolverán igualmente un long.

Continue reading…

Fibonacci recursivo y con ciclos en Ruby

Sucesión fibonacci con recursividad y ciclos en Ruby

Siguiendo con los algoritmos y ejercicios resueltos en Ruby, vamos a ver hoy cómo obtener el número fibonacci que va en determinada posición.

Fibonacci recursivo y con ciclos en Ruby

Fibonacci recursivo y con ciclos en Ruby

Por ejemplo, el número de la sucesión fibonacci que va en la posición 7 (recordemos que comienza desde cero) es el 13, pues la sucesión va así:

0, 1, 1, 2, 3, 5, 8, 13

Lo que haremos con Ruby será recibir un número y regresar el número fibonacci que va en esa posición; lo haremos de forma recursiva y también usando ciclos.

Nota: las funciones no imprimen la sucesión, pero basta con que dentro de cada una de ellas se imprima el valor con puts y listo, la sucesión será impresa.

Continue reading…

Factorial recursivo e iterativo en Ruby

Factorial iterativo y recursivo en Ruby

Anteriormente vimos el algoritmo del factorial en JavaScript. Ahora veamos cómo calcular el factorial de un número usando el lenguaje de programación Ruby.

Factorial recursivo e iterativo en Ruby

Factorial recursivo e iterativo en Ruby

Veremos dos formas de resolverlo, la primera utiliza un ciclo while (forma iterativa o con ciclos) y la segunda un enfoque recursivo o con recursión en donde la función se llama a sí misma.

Continue reading…

Búsqueda binaria en arreglos de cadena con C

Búsqueda binaria en arreglos de cadenas con C

Introducción

Esto es el complemento a la entrada publicada anteriormente sobre la búsqueda binaria en C sobre arreglos de números.

Ahí buscamos en arreglos de números, ahora nos toca buscar en arreglos de cadenas. Igualmente aplicaremos la forma recursiva y con el ciclo while.

Los arreglos de cadenas son una cosa un poco complicada al inicio, sobre todo en este lenguaje. Por eso te invito a que leas cómo trabajar con arreglos de cadenas en C.

Continue reading…

Programa en C: búsqueda binaria recursiva y secuencial en arreglos

Introducción

Luego de algún tiempo he terminado de implementar la función recursiva y con ciclos para ejecutar el algoritmo de búsqueda binaria en un arreglo numérico en C.

Este algoritmo también es conocido como divide y vencerás; pues va dividiendo el arreglo en 2 hasta encontrar lo que buscamos, aunque como requisito dicho arreglo debe estar ordenado.

Continue reading…

Palíndromo en C

Palíndromo en C usando recursividad y ciclos

Introducción

Ya comprobamos si una cadena es palíndroma o palíndromo en C#, un lenguaje de alto nivel en donde no nos importa mucho el manejo de la memoria, tenemos booleanos y funciones para cortar cadenas.

Ahora veamos lo mismo pero en el lenguaje de programación C, uno antiguo en donde ni siquiera existe un recolector de basura.

Palíndromo en C

Palíndromo en C

En resumen, veremos cómo:

  • Comprobar si una cadena es palíndroma usando recursividad
  • Usar el ciclo while para determinar si una cadena es palíndroma

Todo esto en el lenguaje ANSI C. Si no sabes lo que esto es, visita la Wikipedia.

Continue reading…

Búsqueda binaria en Java

Búsqueda binaria en Java sobre arreglos numéricos

Introducción

Hoy veremos cómo implementar el algoritmo de búsqueda binaria en el lenguaje de programación Java. Este algoritmo funcionará  con números; y más tarde con cadenas. Veamos lo que haremos:

  • Escribir una función que busque de forma binaria en arreglos de números usando recursividad o recursión
  • Implementar el algoritmo de búsqueda binaria secuencial (con ciclos, en este caso while) en arreglos de números.

Aquí dejo una imagen del código para adornar el post. No te preocupes, podrás copiarlo como texto más abajo, esto es meramente ilustrativo.

Búsqueda binaria en Java

Búsqueda binaria en Java

Si quieres tomarle fotos a tu código, prueba Polacode; una extensión para VSCode.

Más tarde traeré la implementación para la búsqueda binaria en cadenas o strings.

Continue reading…

Algoritmo de búsqueda binaria en JavaScript

Introducción

Hoy veremos cómo usar e implementar el algoritmo de búsqueda binaria en arreglos usando JavaScript. Veremos tanto la forma que usa recursividad (también llamada recursión o de forma recursiva) así como la forma que utiliza una sentencia de control del ciclo while.

Este algoritmo de búsqueda binaria en JavaScript funciona en arreglos de strings y de números, en otras palabras funciona en arreglos de tipo int y de tipo string, ya que JavaScript sí compara a las cadenas usando los símbolos de > mayor qué y < menor qué.

Vamos a ver cómo implementar este algoritmo de búsqueda binaria que tiene el enfoque de divide y vencerás, usando el lenguaje de programación JavaScript que se puede ejecutar en el navegador web o en Node

Continue reading…

Búsqueda binaria en arreglo de PHP

Búsqueda binaria recursiva y sencuencial en arreglo de PHP

Introducción

Veamos la implementación de un algoritmo que me gusta mucho; se trata de la búsqueda binaria. La primera vez que escuché de él fue en mi clase de Estructura de datos; ni siquiera sabía que algo así existía.

En fin, después de ello me fascinó mucho; sobre todo por la velocidad del mismo. Enseñaré cómo buscar una cadena en un arreglo usando recursividad con una búsqueda binaria, y cómo hacer lo mismo pero en un arreglo con números.

Haremos lo mismo pero usando el ciclo while; a eso se le llama búsqueda binaria en forma secuencial.

Búsqueda binaria en arreglo de PHP

Búsqueda binaria en arreglo de PHP

Nota: recuerda que este algoritmo requiere que el arreglo esté ordenado. Pásate por mi post para saber cómo ordenar arreglos de PHP.

Por otro lado, te recomiendo leer lo que son los argumentos que son tomados por referencia. Para redondear y calcular la mitad del arreglo usamos la función floor en PHP.

En caso de que obtengas errores de sintaxis con los corchetes es debido a la notación corta de arreglos en PHP.

Continue reading…

Comprobar si una cadena es palíndroma usando recursividad en C#

Introducción

Los palíndromos son palabras que se leen de igual manera de izquierda a derecha y de derecha a izquierda. Por ejemplo, “La ruta natural” o “Luz azul” son ejemplos de palíndromos.

Para comprobar si una oración lo es, simplemente hay que ver si al invertirla es igual que la original. Pero en este caso no podemos hacerlo así, porque tenemos que usar recursividad. Así que vamos a ver cómo comprobar si es palíndromo usando C# y recursión.

Pequeña nota: este ejemplo no remueve los espacios en blanco. Si quieres probar con una oración, remueve los espacios primero. Es decir, si quieres probar con “La ruta natural” escríbela así: “larutanatural”.

Igualmente puedes modificar el código y remover los espacios por ti mismo.

Nota: mira cómo se hace la implementación en C.

Algoritmo

La función que vamos a crear recibirá como argumento una variable de tipo String, que será la palabra en sí. Regresará un Booleano, que puede ser True o False indicando si la palabra lo es.

Paso 1: comprobar si la cadena tiene menos de dos caracteres

Primeramente veremos si la cadena está vacía o tiene sólo un carácter o letra, en caso de que sí, vamos a salir de la recursión. Ya que, por ejemplo, la letra “m” se lee de igual manera de izquierda a derecha que de derecha a izquierda y, aunque no sea una palabra, podría decirse que es un palíndromo.

Si te fijas en el ejemplo, también en este paso es cuando se puede decir que sí es palíndromo, porque es llamado con una sola letra (la “l”).

Paso 2: comparar primer y último carácter

Si la recursión no se rompió en el paso 1, vamos a comparar la primera y última letra de la cadena. Por ejemplo, si tenemos a “solos”, compararíamos la “s” (que es la primera letra) y la “s” (que es la última letra).

Si las letras no coinciden, se rompe la recursión porque desde ahí nos damos cuenta de que no es un palíndromo.

En caso de que las letras coincidan, aquí pasa la magia, y se vuelve a llamar a la recursión como el paso 3 lo detalla.

Paso 3: recursividad

Si no se rompe la recursión en el primer o segundo paso, entonces se llamará a la función de nuevo, pero no con la misma cadena de entrada, sino con el último y primer carácter.

Pongamos de ejemplo la palabra “solos” de nuevo. Al comparar el primer y último carácter el resultado es True, así que llamamos a la función de nuevo pero esta vez le pasamos “olo” (quitar primer y último). Y así hasta que se termine el ciclo.

Ejemplo

Por última vez usemos la palabra “solos” y veamos lo que pasa.

Se llama a la función con “solos”. Comprobamos si tiene menos de 2 letras. ¿Las tiene? no. Entonces comparamos la primera y última de estas. ¿Coincide? sí. Entonces llamamos a la función de nuevo con la cadena cortada.

Se llama a la función con “olo”. Comprobamos si tiene menos de 2 letras, y no es así. Así que comparamos la primera y última (“o” con “o”). Como sí coinciden, llamamos de nuevo a la función con la cadena cortada.

Finalmente llamamos al proceso con “l”. Comprobamos si tiene menos de 2 letras, y efectivamente así es. Así que aquí acaba la recursividad, y regresamos True.

Código

Una vez explicado el concepto y cómo se trabaja, aquí dejo el código

Ver online

Finalmente aquí dejo el ejemplo para que se pueda ejecutar en línea, sin descargar nada. Las vocales acentuadas (como í) no se muestran, pero eso no impide que se pueda probar. Para probar haz click en el botón de Play