¿Qué es la recursividad y cómo se usa?

¿Qué es la recursividad y cómo se usa?

La recursividad es un concepto de programación divertido, pero puede ser un poco complicado de aprender. La recursividad simplemente significa algo que se repite. Si desea ver un ejemplo descarado de recursividad, intente buscar recursividad en Google. Encontrará un huevo de Pascua donde las sugerencias de resultados de búsqueda son recursivas. Si, por otro lado, desea aprender a codificar una función recursiva, ¡siga leyendo!

¿Qué es una función recursiva?

Una función recursiva es una función que se llama a sí misma. Básicamente, creas un bucle con una función. Como puede imaginar, estas pueden ser funciones difíciles de escribir. No desea que su código se ejecute para siempre.

Similar a un ciclo, una función recursiva será controlada por una condición. Una vez que se cumple la condición, la función deja de llamarse a sí misma, lo que detiene el bucle. Así es como puede crear una función que se llame a sí misma sin que se ejecute para siempre.

Aunque una función recursiva actúa como un bucle, la computadora la ejecuta de manera diferente. Entonces, algunos algoritmos son más eficientes en un bucle y otros se benefician de una función recursiva. Pero antes de que veamos cómo usar una función recursiva, necesita saber cómo escribir una.

Cómo escribir una función recursiva

Todas las funciones recursivas tienen la misma estructura básica:

FUNCTION name IF condition THEN RETURN result ELSE CALL FUNCTION name END FUNCTION

El ejemplo anterior está escrito en pseudocódigo. Describe la estructura de la función, que se puede aplicar a cualquier idioma. Para simplificar, en este artículo, nos concentraremos en Python.

Lo primero que hay que tener en cuenta sobre una función recursiva es que cuando se cumple la condición, la función sale de la recursividad. Esto significa que cuando escribe una función recursiva, lo primero que querrá determinar es cuándo detener la recursividad.

Si no se cumple la condición, la función se llamará a sí misma. Entonces, si desea enviar información al siguiente ciclo, deberá enviarla como un argumento en su función. Esto puede dar a las funciones recursivas mucho más poder.

Relacionado: ¿Qué es una función en la programación?

Ejemplo de función recursiva en Python

Será mucho más fácil entender cómo funciona la recursividad cuando la vea en acción. Para demostrarlo, escribamos una función recursiva que devuelva el factorial de un número.

Los factoriales devuelven el producto de un número y de todos los enteros anteriores. Por ejemplo, el factorial de 5 es 5 x 4 x 3 x 2 x 1 o 120.

def factorialFunction(numberToMultiply): if numberToMultiply == 1 : return 1 else : return numberToMultiply * factorialFunction(numberToMultiply - 1) result = factorialFunction(3) print(result) //Outputs: 6

El programa anterior le dará el resultado 6, que es el factorial del número 3. Esto puede ser un poco confuso al principio. Ayudará si ejecutamos el programa paso a paso.

  1. Cuando se llama a la función, numberToMultiply es igual a 3.
  2. La condición no se cumple, así que pasamos a la condición else .
  3.  Nuestra función devuelve 3 * pero luego se pausa. Debe llamarse a sí mismo para determinar el resto del valor que está devolviendo.
  4. Cuando se llama a la función esta vez, el valor de numberToMultiply es igual a 2.
  5. La condición no se cumple, así que pasamos a la condición else.
  6. Nuestra función devuelve 2 * pero luego se pausa. Debe llamarse a sí mismo para determinar el resto del valor que está devolviendo.
  7. La función se llama una vez más. Esta vez, el valor de numberToMultiply es igual a 1.
  8. Nuestra condición si se cumple. La función devuelve 1.
  9. La función del paso 6 ahora puede devolver 2 * 1 a la función del paso 3.
  10. La función en el paso tres ahora puede devolver 3 * 2 * 1, que es 6.

¿Qué es la recursividad y cómo se usa?

La recursividad es un concepto complicado. Puede ser útil pensar en ello como apilar una función sobre otra función. Una vez que una función se resuelve finalmente, puede enviar la información de vuelta a la pila, hasta que todas las funciones tengan su respuesta.

En realidad, esto es lo que hace tu computadora. Cuando llama a la función, se mantiene en la memoria hasta que se devuelve. Esto significa que las funciones recursivas pueden usar mucha más memoria que un bucle.

Por lo tanto, puede que no sea eficiente escribir bucles como funciones recursivas, pero es una excelente manera de practicar su construcción. Debería poder codificar bucles como funciones recursivas con resultados similares.

Un ejemplo de cómo convertir un bucle en una función recursiva

print("Enter an even number:") i = int(input()) while (i % 2) != 0 : print("That number is not even. Please enter a new number:") i = int(input())

Este bucle también se puede escribir de forma recursiva como:

def recursiveFunction(number) : if (number % 2) == 0 : return number else: print("That number is not even. Please enter a new number:") recursiveFunction(int(input())) print("Enter and even number:") i = recursiveFunction(int(input()))

El primer paso es determinar cuándo desea que se detenga su función. En este caso, queremos que se detenga una vez que se ingrese un número par. En nuestro ejemplo, el número rastrea la entrada del usuario. Si ingresan un número par, devolvemos el número. De lo contrario, seguiremos solicitando un nuevo número.

Para configurar el ciclo, volvemos a llamar a nuestra función. Pero esta vez, el número que pasamos a la siguiente función es el nuevo número introducido por el usuario. La siguiente llamada a la función comprobará el número.

¡Esta es una función realmente mala! Sí, está comprobando si el número es par, como nuestro bucle, pero no es eficiente. Cada vez que el usuario ingresa un número impar, la función se guarda en la memoria y se llama a una nueva función. Si haces esto suficientes veces, ¡te quedarás sin memoria!

Relacionado: Ejemplos básicos de Python que lo ayudarán a aprender rápidamente

Un ejemplo del mundo real de una función recursiva

Los ejemplos anteriores son buenos ejemplos de cuándo no utilizar la recursividad. Entonces, ¿dónde se usa la recursividad? Un buen ejemplo de cuándo querría utilizar la recursividad es buscar en un árbol binario.

¿Qué es la recursividad y cómo se usa?

Cuando los datos están estructurados en un árbol binario, debe recorrer muchas rutas para buscar datos. En cada punto del árbol, debe decidir si desea continuar buscando a la derecha o a la izquierda. Puede guardar qué parte del árbol visitó en una variable, pero una función recursiva naturalmente puede rastrear esa información.

Imagina que estamos buscando el número seis en el árbol de arriba. Podríamos hacer una función recursiva que busque en el árbol de izquierda a derecha. El algoritmo se vería así:

FUNCTION searchTree(branchToSearch) IF find 6 OR end of tree THEN RETURN result ELSE PROCESS branch CALL FUNCTION searchTree(left) CALL FUNCTION searchTree(right) END FUNCTION

En este ejemplo de pseudocódigo, el algoritmo buscaría primero en el lado izquierdo del árbol. Cada vez que visita un número nuevo, la función se detiene y se guarda en la memoria. Esto nos permite rastrear dónde hemos estado.

El algoritmo siempre buscará primero en el lado izquierdo tanto como pueda. una vez que llega al final del árbol, el árbol de búsqueda (izquierda) se completará y comprobará el lado derecho. Una vez que se verifican ambos lados, la búsqueda retrocede una rama y continúa verificando el lado derecho.

Si los algoritmos buscaran en todo el árbol, lo harían en el orden:

2, 7, 2, 6, 5, 11, 5, 9 y 4

Vea si puede seguir usando el pseudocódigo anterior.

Revisión de la recursividad

La recursividad es un tema avanzado. Llevará algún tiempo comprenderlo y aún más aprender a codificarlo. Le ayudará si recorre las funciones recursivas paso a paso. Incluso podría ser útil apilar tarjetas de índice o notas adhesivas a medida que avanza en una función cuando aprende a representar cada llamada de función.

Al escribir una función recursiva, comience por decidir cómo desea salir de la función. A continuación, determine cómo configurar su bucle. Identifique qué información debe enviarse a la siguiente llamada de función y qué debe devolverse.

La mejor forma de aprender la recursividad es practicarla y aprender de tus errores. Mire parte de su código anterior y desafíese a reescribir los bucles como funciones recursivas. Probablemente no hará que su código sea más eficiente, pero será una buena práctica.


Cómo usar Python como una calculadora de línea de comandos

Cómo usar Python como una calculadora de línea de comandos

Si bien puede usar una calculadora gráfica en su computadora, el intérprete del lenguaje de programación Python puede funcionar como una calculadora de escritorio. Es una broma de ejecución tan popular en la comunidad de Python que se menciona en el tutorial oficial. Así es como puedes usar Python como calculadora.

Los 8 mejores blogs de Java para programadores

Los 8 mejores blogs de Java para programadores

Como programador, debe enfrentar desafíos para sobrevivir y construir algunas maravillas en el campo del desarrollo o la programación. Por lo tanto, si está buscando aprender un lenguaje de programación avanzado para mejorar sus habilidades profesionales, Java es uno de los mejores prospectos que existen.

7 comandos vitales para comenzar con Python para principiantes

7 comandos vitales para comenzar con Python para principiantes

Aprender un nuevo lenguaje de programación como Python se vuelve fácil si tiene una hoja de ruta completa que detalla qué conceptos aprender como principiante y cómo progresar más para alcanzar el siguiente hito. Incluso los programadores intermedios deberían repasar con frecuencia sus conceptos básicos para construir una base sólida para ellos mismos.

Principios de diseño web receptivo

Principios de diseño web receptivo

Hoy en día, es una práctica común crear un sitio web o una aplicación que ajuste su interfaz de usuario según el navegador o el dispositivo. Hay dos enfoques para lograr este objetivo. La primera implica la creación de diferentes versiones de su sitio web o aplicación para diferentes dispositivos. Pero es ineficiente y puede provocar errores impredecibles.

Cómo contar la cantidad de dígitos en un número usando C ++, Python y JavaScript

Cómo contar la cantidad de dígitos en un número usando C ++, Python y JavaScript

Trabajar con números es una parte integral de la programación. Todos los lenguajes de programación brindan soporte para manipular números de muchas formas diferentes. En este artículo, aprenderá a encontrar el número total de dígitos en un entero utilizando enfoques iterativos, basados ​​en registros y basados ​​en cadenas.

Las 9 mejores alternativas de Docker para la gestión de contenedores

Las 9 mejores alternativas de Docker para la gestión de contenedores

Los contenedores son muy beneficiosos para el desarrollo, la implementación y la administración de software en un entorno virtual. Docker es útil en el proceso de contenedorización, pero no es la única plataforma que existe. Si está buscando algunas alternativas a Docker, no busque más. Esta lista muestra algunas alternativas de Docker eficientes y ricas en funciones para usar en su próximo proyecto.

SQL vs. NoSQL: ¿Cuál es la mejor base de datos para su próximo proyecto?

SQL vs. NoSQL: ¿Cuál es la mejor base de datos para su próximo proyecto?

SQL vs. NoSQL: ¿Cuál es la mejor base de datos para su próximo proyecto?

Cómo incrustar tweets en sus publicaciones de WordPress

Cómo incrustar tweets en sus publicaciones de WordPress

Incrustar servicios de terceros en sus publicaciones de WordPress es una forma emocionante de cautivar el interés de un visitante. El contenido incrustado también proporciona señales visuales que facilitan el escaneo. WordPress ha facilitado la adición de este tipo de contenido.

Cómo eliminar la carpeta de módulos de nodo con npkill

Cómo eliminar la carpeta de módulos de nodo con npkill

Node.js es un entorno de ejecución de JavaScript que le permite ejecutar JavaScript fuera de los navegadores web, lo que lo convierte en una opción popular para desarrollar todo tipo de aplicaciones. Parte de su popularidad se debe a la gran cantidad de paquetes de NPM que existen para facilitar la experiencia del desarrollador.

Cómo escribir y compilar su primer código de solidez

Cómo escribir y compilar su primer código de solidez

La solidez es el lenguaje de programación utilizado por los contratos inteligentes en la cadena de bloques Ethereum. Es un lenguaje de programación orientado a objetos de tipo estático.

Las 5 mejores insignias que potenciarán su repositorio de GitHub

Las 5 mejores insignias que potenciarán su repositorio de GitHub

Las insignias de GitHub pueden aumentar la legibilidad de un repositorio al proporcionar a los usuarios una forma rápida de capturar las métricas del repositorio. Las insignias se pueden incrustar en su README.md para aclarar la importancia y la necesidad de su proyecto a otros desarrolladores. Como resultado, los lectores obtienen una idea muy rápida del repositorio al verificar las insignias adjuntas.

¿Qué es el Día Internacional de los Programadores? 3 formas de celebrar este año

¿Qué es el Día Internacional de los Programadores? 3 formas de celebrar este año

Los días de celebración internacional son una buena forma de reconocer los asuntos sociales, los días históricos y las respectivas carreras. El Día Internacional de los Programadores celebra el papel que desempeñan los programadores para mejorar la vida cotidiana. El mundo civilizado en el que vivimos es producto del arduo trabajo de los programadores.

¿Cómo funciona el método Python String format ()? 10 ejemplos

¿Cómo funciona el método Python String format ()? 10 ejemplos

Ya sea una consulta de base de datos o resultados de operaciones matemáticas, el método de formato de cadena de Python ofrece una forma más dinámica y atractiva de presentar resultados a un usuario.

Visual Studio 2022 frente a 2019: ¿Debería actualizar ahora? Explicado

Visual Studio 2022 frente a 2019: ¿Debería actualizar ahora? Explicado

A principios de este año, Microsoft lanzó la versión preliminar de Visual Studio 2022 en el salvaje mundo de la programación. ¡Estas son buenas noticias! Es un IDE extremadamente popular, pero debido a una puesta a punto o tal vez incluso una revisión, dado el ritmo de cambio en el ecosistema DevOps en el que prospera.

Una introducción simple a las métricas de software

Una introducción simple a las métricas de software

Las métricas de software son medidas que se utilizan para cuantificar varios aspectos de su software. Estos aspectos pueden variar desde el costo, la calidad y la eficiencia del equipo de desarrollo.

Cómo instalar .NET Framework versión 3.5 en Windows 10

Cómo instalar .NET Framework versión 3.5 en Windows 10

Como usuario de Windows, probablemente al menos una vez se haya encontrado con las palabras .NET Framework. Es un marco de software desarrollado por Microsoft que le permite crear y ejecutar programas C #, C ++, F # y Visual Basic. La última versión de .NET es 4.8, pero es posible que su computadora necesite una versión anterior de .NET (como .NET 3.5) para ejecutar algunas aplicaciones.

Frasco o CherryPy: ¿Qué marco de Python debería usar?

Frasco o CherryPy: ¿Qué marco de Python debería usar?

Si es un desarrollador de Python, puede beneficiarse enormemente de la variedad de marcos disponibles. Si bien algunos marcos son más adecuados para grandes ecosistemas, otros se especializan en cumplir objetivos de desarrollo específicos. Siga leyendo para conocer las características básicas, los usos y las diferencias entre dos marcos de Python: Flask y CherryPy.

Cómo encontrar cubos y cuadrados perfectos de N dígitos usando Python, C ++ y JavaScript

Cómo encontrar cubos y cuadrados perfectos de N dígitos usando Python, C ++ y JavaScript

A muchos programadores les encanta resolver problemas matemáticos complicados utilizando código. Ayuda a agudizar la mente y mejorar la capacidad de resolución de problemas. En este artículo, aprenderá a encontrar los cuadrados y cubos perfectos de n dígitos más pequeños y más grandes utilizando Python, C ++ y JavaScript. Cada ejemplo también contiene una salida de muestra para varios valores diferentes.

Cómo agregar Python a la variable PATH de Windows

Cómo agregar Python a la variable PATH de Windows

Ejecutar Python desde la terminal a menudo es inevitable. Sin embargo, si acaba de instalar Python en Windows 10 por primera vez, ejecutarlo a través de la Terminal de Windows solo es posible si se agrega a la variable de entorno Windows PATH.

Cómo usar la declaración if de Python

Cómo usar la declaración if de Python

La declaración if es la fuerza impulsora de la programación lógica. Como resultado, una mejor comprensión de Pythons es una adición significativa a sus habilidades de programación de Python.

Cómo usar Python como una calculadora de línea de comandos

Cómo usar Python como una calculadora de línea de comandos

Si bien puede usar una calculadora gráfica en su computadora, el intérprete del lenguaje de programación Python puede funcionar como una calculadora de escritorio. Es una broma de ejecución tan popular en la comunidad de Python que se menciona en el tutorial oficial. Así es como puedes usar Python como calculadora.

Los 8 mejores blogs de Java para programadores

Los 8 mejores blogs de Java para programadores

Como programador, debe enfrentar desafíos para sobrevivir y construir algunas maravillas en el campo del desarrollo o la programación. Por lo tanto, si está buscando aprender un lenguaje de programación avanzado para mejorar sus habilidades profesionales, Java es uno de los mejores prospectos que existen.

7 comandos vitales para comenzar con Python para principiantes

7 comandos vitales para comenzar con Python para principiantes

Aprender un nuevo lenguaje de programación como Python se vuelve fácil si tiene una hoja de ruta completa que detalla qué conceptos aprender como principiante y cómo progresar más para alcanzar el siguiente hito. Incluso los programadores intermedios deberían repasar con frecuencia sus conceptos básicos para construir una base sólida para ellos mismos.

Principios de diseño web receptivo

Principios de diseño web receptivo

Hoy en día, es una práctica común crear un sitio web o una aplicación que ajuste su interfaz de usuario según el navegador o el dispositivo. Hay dos enfoques para lograr este objetivo. La primera implica la creación de diferentes versiones de su sitio web o aplicación para diferentes dispositivos. Pero es ineficiente y puede provocar errores impredecibles.

Cómo contar la cantidad de dígitos en un número usando C ++, Python y JavaScript

Cómo contar la cantidad de dígitos en un número usando C ++, Python y JavaScript

Trabajar con números es una parte integral de la programación. Todos los lenguajes de programación brindan soporte para manipular números de muchas formas diferentes. En este artículo, aprenderá a encontrar el número total de dígitos en un entero utilizando enfoques iterativos, basados ​​en registros y basados ​​en cadenas.

Las 9 mejores alternativas de Docker para la gestión de contenedores

Las 9 mejores alternativas de Docker para la gestión de contenedores

Los contenedores son muy beneficiosos para el desarrollo, la implementación y la administración de software en un entorno virtual. Docker es útil en el proceso de contenedorización, pero no es la única plataforma que existe. Si está buscando algunas alternativas a Docker, no busque más. Esta lista muestra algunas alternativas de Docker eficientes y ricas en funciones para usar en su próximo proyecto.

SQL vs. NoSQL: ¿Cuál es la mejor base de datos para su próximo proyecto?

SQL vs. NoSQL: ¿Cuál es la mejor base de datos para su próximo proyecto?

SQL vs. NoSQL: ¿Cuál es la mejor base de datos para su próximo proyecto?

Cómo incrustar tweets en sus publicaciones de WordPress

Cómo incrustar tweets en sus publicaciones de WordPress

Incrustar servicios de terceros en sus publicaciones de WordPress es una forma emocionante de cautivar el interés de un visitante. El contenido incrustado también proporciona señales visuales que facilitan el escaneo. WordPress ha facilitado la adición de este tipo de contenido.

Cómo eliminar la carpeta de módulos de nodo con npkill

Cómo eliminar la carpeta de módulos de nodo con npkill

Node.js es un entorno de ejecución de JavaScript que le permite ejecutar JavaScript fuera de los navegadores web, lo que lo convierte en una opción popular para desarrollar todo tipo de aplicaciones. Parte de su popularidad se debe a la gran cantidad de paquetes de NPM que existen para facilitar la experiencia del desarrollador.

Cómo escribir y compilar su primer código de solidez

Cómo escribir y compilar su primer código de solidez

La solidez es el lenguaje de programación utilizado por los contratos inteligentes en la cadena de bloques Ethereum. Es un lenguaje de programación orientado a objetos de tipo estático.