recursividad

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…

Funciones en Kotlin

En este artículo veremos cómo definir e invocar funciones en Kotlin usando la palabra reservada fun.

Daremos un repaso para ver recursividad, funciones variádicas, vacías, de una sola línea, sobrecarga de métodos, funciones con nombres de parámetros, funciones como variables y mucho más.

Factorial en Kotlin – Ejemplo de función con recursividad

Una función es una forma de separar y dividir la lógica de nuestros programas. La mayoría de veces, las funciones en Kotlin reciben argumentos, los procesan y devuelven un resultado.

A veces hay funciones que no regresan nada, o que no reciben nada; pero que igualmente sirven para algo.

Continue reading…

Crear archivos zip con PHP: agregar archivos y directorios, descargar zip y proteger con contraseña

Desde hace tiempo he querido hacer un post completo sobre cómo trabajar con archivos ZIP en PHP.

Como sabemos, los archivos ZIP son unos paquetes que permiten tener dentro múltiples archivos para su posterior transporte.

Tutorial de creación de archivos zip con PHP

PHP tiene soporte nativo para los archivos ZIP en la clase ZipArchive y permite comprimir o empaquetar archivos de una manera fácil.

Hoy vamos a ver cómo:

  1. Crear un archivo zip  y agregarle contenido
  2. Forzar la descarga de un archivo zip, es decir, crear un zip y mostrarlo en el navegador
  3. Agregar archivos a un zip a partir de un patrón glob
  4. Agregar todo el contenido de un directorio de manera recursiva. Es decir, agregar todo el contenido y si hay un directorio agregar el contenido de ese directorio, así recursivamente.
  5. Proteger un archivo ZIP con contraseña

Todavía no vamos a ver cómo descomprimir o desempaquetar, eso es de otro post.

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…

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…

Minutos a tiempo legible en JavaScript

Convertir minutos a texto legible en JavaScript

En un sistema web en el que he estado trabajando tuve la necesidad de convertir minutos a su representación como texto, en cantidades más grandes. Por ejemplo, 59 minutos son 59 minutos, pero 60 minutos son 1 hora, así que en lugar de mostrarlos como minutos, se muestran como horas.

Minutos a tiempo legible en JavaScript

Minutos a tiempo legible en JavaScript

La función que escribí puede convertir cualquier número de minutos a su representación como horas, días, semanas, meses o años. Con los ejemplos veremos de lo que hablo.

Continue reading…

Algoritmo para calcular factorial en JavaScript

Factorial de un número en JavaScript con recursividad y ciclos

En este post vamos a ver cómo calcular el factorial de un número en JavaScript de dos maneras distintas. Una de ellas es usar un ciclo para calcular el factorial, y la otra es usando la recursividad o recursión.

Algoritmo para calcular factorial en JavaScript

Algoritmo para calcular factorial en JavaScript

También veremos el cálculo del factorial de un número usando a BigInt, un nuevo tipo de dato para JavaScript.

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…