Stefan Sanchez
FABIAN ALBERTO BANUET
jajajaja
Luis E. Gama Ramirez
Jajajaja
La recursividad es cuando una función se llama a sí misma y esta genera una nueva ejecución de la función. Esto sucede reiteradamente hasta que cumpla o no con cierta validación que nosotros declaremos para que deje de llamarse a sí misma en algún punto.
Normalmente, pensaríamos que este tipo de problemas lo podemos resolver con condicionales y/o bucles. Veamos el siguiente ejemplo:
// PROBLEMA: // Deseamos imprimir una serie de números desde el 0 hasta n números. En este caso // hasta el 4 let numerito = 0; // Declaramos desde el número que deseamos partir. // Usamos un bucle while para repetir este proceso hasta que se cumpla la condición: while(numerito < 5) { console.log(numerito); numerito++; }
Así resolveríamos este problema con recursividad:
// Función recursiva: function recursiva(numerito) { // Recive un número console.log(numerito); // Imprimimos en consola el número if (numerito < 5) { // Evalua si es menor a 5 // Llamamos nuevamente a nuestra función enviandole el número siguiente: return recursiva(numerito + 1); } else { // La función deja de llamarse a sí misma: return 5; } }
¿Por qué escribir programas recursivos?
¿Cuándo SÍ es factible de utilizar recursividad?
¿Cuándo NO es factible utilizar recursividad?
Empleemos ahora la recursividad para poder aplicar el Deep Copy en JavaScript y así copiar de manera óptima nuestros objetos. 🤓💪
Contribución creada por: Martín Álvarez (Platzi Contributor) con el aporte de Carlos Mazzaroli.
Stefan Sanchez
FABIAN ALBERTO BANUET
jajajaja
Luis E. Gama Ramirez
Jajajaja
Carlos Mazzaroli
Tarea del profe
¿Por qué escribir programas recursivos?
Factible de utilizar recursividad
No factible utilizar recursividad
Fuente: https://www.uv.mx/personal/ocastillo/files/2011/04/Recursividad.pdf
Carlos Mazzaroli
Tambien lei este post y decia esto
Conclusiones
Fuente: https://infseg.com/informatica/recursividad-cuando-debo-utilizarla/
Rubén Ernesto Aragón Gil
Gracias por el material, bro.
Juan Castro
Profesor:bird: Si quieren divertirse con la recursividad en Twitter: https://twitter.com/freddier/status/1432713290942144519
Yeins David Llano Hernández
jajajaja
Rubén Ernesto Aragón Gil
Quede como un niño cuando pides querer jugar y te dan otra cosa que no es el control.
Carlos Mazzaroli
["✌","😂","😝","😁","😱","👉","🙌","🍻","🔥","🌈","☀","🎈","🌹","💄","🎀","⚽","🎾","🏁","😡","👿","🐻","🐶","🐬","🐟","🍀","👀","🚗","🍎","💝","💙","👌","❤","😍","😉","😓","😳","💪","💩","🍸","🔑","💖","🌟","🎉","🌺","🎶","👠","🏈","⚾","🏆","👽","💀","🐵","🐮","🐩","🐎","💣","👃","👂","🍓","💘","💜","👊","💋","😘","😜","😵","🙏","👋","🚽","💃","💎","🚀","🌙","🎁","⛄","🌊","⛵","🏀","🎱","💰","👶","👸","🐰","🐷","🐍","🐫","🔫","👄","🚲","🍉","💛","💚"]
Raycris Maldonado
Grande PA!
Josué Cristian Olguin Herrera
En una optativa de la carrera, vi programación funcional con haskell. En ese lenguaje los bucles no existen, por lo tanto, la única forma de hacer iteraciones era usando recursividad. Fue estresante, pero muy divertido.
Ricardo Rito Anguiano
Por si les interesa saber que patricio dejo de ser recursivo, minuto 6:25 sale el patricio que decidio no ser recursivo JAJAJA
Daniel Quispe
Creo que la recursividad solo se deve usar en casos especificos, para lo demas prefiero usar iteraciones con ciclos de repeticon.
Miguel Angel Reyes Moreno
Fernando Andrés Villaquirán Hurtado
Lo malo de la recursividad es que es exponencial, vs un ciclo en tiempos pierde siempre, aunque es muy bonita su implementación.
Rodrigo Ramos Xochiteotzin
La complejidad algorítmica es un buen criterio, tienes razón.
Fernando Francisco López Mauro
no siempre sera exponencial :), su complejidad puede variar,
Facundo Esteban Gasco
Me gusta la recursividad por que con 4 lineas de codigo puedo romper mi navegador.
Carlos Esteban Lara Gil
Cristian Blandon
Aquí un artículo que compara a profundidad los ciclos iterativos vs. los ciclos recursivos.
Nazareno Aznar Altamiranda
La recursion nos permite hacer un codigo más elegante, sacrificando la eficiencia (además de ofrecernos soluciones en casos muy particulares)
Ej:
function recursive(num) { console.log(num); num < 50 && recursive(num+1) }
vs
function forLoop() { for(let i = 1; i <= 50; i++) { console.log(i) } }
Las diferencias pueden no ser muy claras con un script tan básico, pero cobra sentido cuando el ciclo se vuelve más complejo. Podemos usarlo si sabemos que un ciclo no va a tener muchas iteraciones (por ej, una llamada a 10 productos)
Podés encontrar ejercicios de recursividad en leetcode y codewars
Ignacio Basilio
Esto es lo que hice antes de ver el capitulo. :3
Fabian Perdomo
Un ejercicio de recursividad después de dos días de revisar el tema: 🤯
const contenNumbers = [0, 1, "Spiderman", 34, 4, 5, 777,"JuanDC", 6, 7, 8, "Batman", 435678, 900, 2, 3]; let eleWanted = "JuanDC"; const recurPosition = (arr, eleWanted, position) =>{ if (arr[position] == eleWanted) { let element = arr[position]; return console.log({position, element}) } else { recurPosition(arr, eleWanted, position - 1); } } recurPosition(contenNumbers, eleWanted, contenNumbers.length - 1);
Jesús Medina
Hasta ahora no me gusta porque no entiendo para que me puede funcionar....
Juan Pablo Hillcoat
Es la tercera vez que veo el video y me pasa lo mismo que a vos. Aparte de que me cuesta entenderlo.
Carlos Ponce
Me parece bastante importanten entender esta tecnica de programacion, yo con anterioridad en un proyecto que tuve utilice este metodo, pero no sabia su nombre hastra ahora, se trataba de sacar 2 valores aleatoriaos con la siguiente condicion: no tendria que ser el mismo valor que se muestra, osea, en este caso un post y que no se repitiera. utlizando la ayuda de objetos literales y la recursivad pude resolver el problrme :P
Sebastián Videla
Me encanto la recursividad, lo veo mucho más elegante ye entendible que el ciclo for
Irving Juárez
De hecho yo creo que el ciclo while se ve mas elegante que la recursividad, al menos en este caso, ya que en otros casos puede que la recursividad sea mejor
const nums = [12, 34, 3, 3, 2, 1, 4, 6, 7, 2]; let i = 0; while (i < nums.length) { console.log({ index: i, value: nums[i] }); i++; }
Raycris Maldonado
Qué es recursividad
Es cuando una función se llama a sí misma. Tenemos que tener un caso base para que esta función se detenga.
Ejemplo básico con TypeScript:
function recursiva(){ if(/*validacion*/){ // llamados recursivos } esle { // llamados normales, sin recursividad } } function recursiva(numerito: number): number { console.log(numerito); if (numerito < 5) { return recursiva(numerito + 1); } else { return 5; } } recursiva(0); function recursiva(numbersArray: number[] | string[]): void { if (numbersArray.length !== 0) { const firstNum = numbersArray[0]; console.log(`first number: ${firstNum}`); numbersArray.shift(); //* elimina el primer elemento del array recursiva(numbersArray); } } recursiva([9,8,7,6,5,4,3,2,1]); recursiva(['😎','🤩','😜','🤑']);
También comparto este artículo: ¿Cuándo usar recursividad
5. ¿Qué es recursividad?
Recursividad es una técnica de programación que consiste en que una función se llama a sí misma y crea una nueva ejecución de nuestra función
let numero = 0; while(numero < 10){ console.log(numero); numero++; }
en recursividad sería_
function recursiva(numero){ console.log(numero); if(numero < 5){ return recursiva(numero + 1); }else { return 5; } }
function recursiva(){ if (/* validación */){ //llamados recursivo }else { //llamados normales, sin recursividad } }
un ejemplo en recursivo sería así:
function recursiva(numbersArray){ if(numbersArray.length != 0){ const firstNumber = numbersArray[0]; console.log(firstNumber); numbersArray.shift(); return recursiva(numbersArray); } }
array de emojis con las comillas correctas
[ "✌", "😂", "😝", "😁", "😱", "👉", "🙌", "🍻", "🔥", "🌈", "☀", "🎈", "🌹", "💄", "🎀", "⚽", "🎾", "🏁", "😡", "👿", "🐻", "🐶", "🐬", "🐟", "🍀", "👀", "🚗", "🍎", "💝", "💙", "👌", "❤", "😍", "😉", "😓", "😳", "💪", "💩", "🍸", "🔑", "💖", "🌟", "🎉", "🌺", "🎶", "👠", "🏈", "⚾", "🏆", "👽", "💀", "🐵", "🐮", "🐩", "🐎", "💣", "👃", "👂", "🍓", "💘", "💜", "👊", "💋", "😘", "😜", "😵", "🙏", "👋", "🚽", "💃", "💎", "🚀", "🌙", "🎁", "⛄", "🌊", "⛵", "🏀", "🎱", "💰", "👶", "👸", "🐰", "🐷", "🐍", "🐫", "🔫", "👄", "🚲", "🍉", "💛", "💚", ]