recursividad en python

Funciones y métodos de Python




Cómo utilizar la recursividad de Python

La recursividad de Python es un tema intimidante para los principiantes. Disipemos el mito de que la recursividad es difícil definiéndola. La recursividad es un método de programación en el que una función se llama a sí misma.

Eso suena simple, ¿verdad? Cuando lo domine, la recursividad no es un concepto difícil.

En este tutorial de Python, vamos a hablar sobre la recursividad y cómo funciona. Veremos un ejemplo de recursividad usando funciones factoriales para ayudarlo a comenzar con este método de programación.




¿Qué es la recursividad?

La recursividad es donde se define algo en términos de a sí misma.

Una función recursiva resuelve problemas llamándose a sí misma de nuevo. Este comportamiento es compatible con la mayoría de los principales lenguajes de programación, como Python. Son una parte crucial de la informática y la ciencia de datos.

La recursividad es útil cuando se puede encontrar la solución a un problema dividiéndolo en problemas más pequeños que utilizan la misma fórmula. Este tipo de problemas a menudo se denominan "algoritmos recursivos". ¡La clave para resolverlos está en el nombre!




Iterativo frente a recursivo

Hay dos formas de resolver un algoritmo: de forma iterativa o recursiva.

Las soluciones iterativas para algoritmos se consideran "poderosas pero feas". Hacen el trabajo, pero no lo hacen exactamente de la manera más elegante. Para comprender correctamente los algoritmos recursivos, debemos analizar las funciones iterativas.

El 81% de los participantes afirmaron que se sentían más seguros acerca de sus perspectivas laborales después de asistir a un campamento de entrenamiento. Asóciese a un bootcamp hoy.

El graduado promedio de un bootcamp pasó menos de seis meses en la transición profesional, desde comenzar un bootcamp hasta encontrar su primer trabajo.

Un function es una función que resuelve un problema usando un bucle. Ejecutará el código dentro de un bucle hasta que ese bucle se complete. Una función recursiva es una función que divide un problema en partes más pequeñas y resuelve cada parte llamándose a sí misma.




Factoriales: el ejemplo iterativo

Los factoriales son una buena forma de demostrar la recursividad y pensamiento iterativo. En matemáticas, los factoriales son la suma de un número y cada número antes de multiplicarlo.


El factorial de 5 es igual a 5 * 4 * 3 * 2 * 1. El factorial de 2 es igual a 2 * 1.

Para calcular un factorial, podemos escribir una función iterativa:

 def factorial (número): total = 1 para n en rango (1, número + 1): total = total * n devuelve total 

Esta función usa un for loop para iterar a través de todos los números en el rango de 1 y el número que hemos especificado más 1. Para cada iteración, el número sobre el que itera el ciclo se multiplica por el total. Llamemos a nuestra función para encontrar el factorial:

 answer = factorial (4) print (respuesta) 

Nuestro código devuelve: 24. Para llegar a esta solución, nuestro código se ejecuta:

 
  • 1 * 1 = 1
  • 2 * 2 = 4
  • 4 * 3 = 8
  • 8 * 4 = 24

Como puede ver, nuestro código multiplica 4 con todos los números más bajos que él y luego él mismo.

Este código es funcional. El único inconveniente es que no es tan elegante como podría ser. Ahí es donde las funciones recursivas son útiles.




Factoriales: el ejemplo de recursividad

Escribamos una función recursiva que calcule un factorial. Abra un nuevo archivo Python y pegue el siguiente código:

 def factorial (número): if number == 1: return 1 else: return (number * factorial (number - 1)) 

Este código usa el enfoque recursivo. Cuando se ejecuta esta función, un & rdquo; if & rdquo; se ejecuta la sentencia . Esta declaración verifica si el número pasado a la función es igual a 1. Si lo es, nuestra función devuelve 1. De lo contrario, se calcula el factorial de nuestro número.

Este cálculo funciona multiplicando el número pasado a la función por el factorial del número anterior. Esta función se llama una y otra vez hasta que & ldquo; number & rdquo; es igual a 1. Cada vez que se llama a la función, el valor de & ldquo; número & rdquo; se reduce en 1.


Probemos nuestro código con el número 4:

 answer = factorial (4) print (answer) 

Se devuelve la respuesta 24. Nuestra respuesta es correcta; es la misma que en nuestro último ejemplo. Hemos encontrado la solución a este problema de forma recursiva en lugar de iterativa.

¿Aún necesitas un poco de ayuda? Veamos otro ejemplo de recursividad.




Recursión con la secuencia de Fibonacci < / h2>

La secuencia de fibonacci es una secuencia matemática donde cada número es la suma de los dos números anteriores. Esta secuencia comienza con: 0, 1, 1, 2, 3, 5, 8, 13, etc.

Esta secuencia agrega dos números para encontrar el siguiente número. Esto lo hace ideal para la recursividad.

Abra un archivo Python y pegue este código: < br>

 
 def fibonacci (número): if número & lt; = 1: return número else: return (fibonacci (número - 1) + fibonacci (número - 2)) 

Este código calculará la suma de dos números precedentes en una lista, siempre que & ldquo; número & rdquo; es más de 1. De lo contrario, "se devuelve el número". Ahora, llamemos a nuestra función:

"Career Karma entró en mi vida cuando más lo necesitaba y rápidamente me ayudó a combinar con un bootcamp. Dos meses después de graduarme, encontré el trabajo de mis sueños que alineado con mis valores y metas en la vida! "

Venus, ingeniero de software en Rockbot

La variable de ejecuciones rastrea cuántos números en el secuencia de Fibonacci que queremos calcular. Usamos esto para crear un bucle for que llama a nuestra función fibonacci () para cada número en el rango de 1 y el valor de & ldquo; ejecuciones. & Rdquo;

Antes de que comience nuestro bucle for, imprimimos & ldquo; Secuencia de Fibonacci: & rdquo; a la consola. En este ejemplo, nuestro & ldquo; for & rdquo; El bucle ejecuta:

 fibonacci (1) fibonacci (2) fibonacci (3) fibonacci (4) fibonacci (5 ) 

Ejecutemos nuestro código todos juntos y veamos qué sucede:

 Secuencia de Fibonacci: 0 1 1 2 3 

Nuestro código calcula los primeros cinco números de la secuencia de Fibonacci. Podríamos calcular más números aumentando el valor de & ldquo; ejecuciones & rdquo ;.




Profundidad de recursión y condiciones base

Una función recursiva debe tener una condición base. Esta es una condición que detiene la recursividad cuando se cumple un caso base particular. Sin una función base, se creará un bucle infinito.


Una función recursiva no puede ejecutarse más de 1000 veces por defecto. Una vez que se alcanza este límite, aparece un error como este:

 RecursionError: se excedió la profundidad de recursión máxima 

Aquí está la condición base para nuestro programa de fibonacci:

 ... if number & lt; = 1: return number & hellip; 

Esta condición comprueba si el valor de & ldquo; número & rdquo; dentro de nuestro programa de fibonacci es igual o menor que 1. Si lo es, se devuelve el valor de & ldquo; número & rdquo; de lo contrario, se inicia la función recursiva.




Por qué ¿Debo usar la recursividad?

¿Cuál es la ventaja de usar la recursividad sobre las funciones iterativas? Técnicamente, ambos métodos pueden lograr el mismo resultado. La recursividad es que es más fácil de leer.

Cuando ve una función recursiva, está claro que la respuesta a un problema radica en dividirla en partes más pequeñas. Si bien los bucles iterativos a veces pueden ser más rápidos, las funciones recursivas generalmente se prefieren debido a su legibilidad.

Debido a que las funciones recursivas son más fáciles de leer, también son más fáciles de mantener y depurar. Esto es especialmente útil cuando está escribiendo algoritmos complejos que pueden ser difíciles de entender.




Conclusión

Una función recursiva es una función que se llama a sí misma para encontrar la solución a un problema. & Nbsp ;

Las funciones recursivas dividen un problema en varias partes y resuelven una parte del problema por iteración. Las funciones recursivas se utilizan comúnmente para calcular factoriales y números en la secuencia de fibonacci. También se utilizan en varios algoritmos.

Ahora está listo para comenzar a trabajar con funciones recursivas en Python.





recursividad en python: StackOverflow Questions

Tutorials