Entendiendo la recursividad con las Torres de Hanoi

  Рет қаралды 254,632

makigas

makigas

Күн бұрын

Пікірлер
@makigas
@makigas 9 жыл бұрын
►► Las torres de Hanoi Cuenta la leyenda que cuando los 64 discos de oro pasen de una torre a la otra, llegará el fin del mundo. Leyenda o no, en este vídeo cuento cómo se puede expresar de forma recursiva el algoritmo de las Torres de Hanoi. Código próximamente. ► Vídeo: kzbin.info/www/bejne/oprPc3qslrSGr5o
@VideogamesAsArt
@VideogamesAsArt 4 жыл бұрын
me encanta que tu comentario sea recursivo. Le hago click y vuelvo a tener el mismo comentario con el mismo enlace.
@quimmonzo
@quimmonzo 3 жыл бұрын
Después de buscar un rato por internet, este video me ha iluminado en pocos segundos. Gracias
@5THEALEX458
@5THEALEX458 3 жыл бұрын
creo que te has equivocado en el pseudocodigo, porque según te entendí, las pilas son 3 , donde las llamas o,d,a así que deducí que a=auxiliar, d=destino y o=origen. Ahora bien, dónde creo que has metido la gamba, cuando vas a explicar el caso base, pones a.apilar(o.desapilar()) cuando en realidad creo que querrías decir d.apilar(o.desapilar()) Un cordial saludo y muchas gracias por toda la explicación, me ayudó mucho!!!
@pahoolk
@pahoolk 2 жыл бұрын
Vine buscando cómo construir mi propia función _printf (aún no tengo npi de por dónde empezar) y me hiciste recordar mi infancia en un museo interactivo para niños donde había unas torres de hannoi gigantes con discos de goma, entretenido estuve más de 1 hora tratando de resolver el problema, iba con una de mis tías master en informática y dijo: "este niño va a ser un buen ingeniero" y bueno aquí estamos tratando de serlo 😅
@Poliformado
@Poliformado 9 жыл бұрын
Una explicación corta, clara, concisa y divertida. Es divertido ver y oír una explicación con el chiste de los memes, se hace muy ameno y la historia final de por qué se llama Torre de Hanoi, cuanto menos resulta interesante de saber.
@Alexander-lg2do
@Alexander-lg2do 4 жыл бұрын
Lo has explicado súper sencillo y entendible! Amé el vídeo
@diegom0209
@diegom0209 8 жыл бұрын
No me queda muy claro, si A es auxiliar, ¿por qué el texto dice que hay que poner en A y la voz dice "poner en Destino"?
@yadyguitar
@yadyguitar 9 жыл бұрын
Muchisimas gracias! No pensé que de verdad lo ibas a publicar tan rápido! Hahahah en serio gracias! Saludos!
@danielchisica6486
@danielchisica6486 8 жыл бұрын
¿Para que necesitabas asimilar este concepto?
@yadyguitar
@yadyguitar 8 жыл бұрын
Daniel Chísica fue ya hace tiempo, una... para entender la recursivisad y otra, porque mi maestro de programación me pidió desarrollar este algoritmo
@danielchisica6486
@danielchisica6486 8 жыл бұрын
Te puedo pedir algunos consejos en base a tu experiencia, es que este semestre comienzo la asignatura de Programación Avanzada
@yadyguitar
@yadyguitar 8 жыл бұрын
claro! yadyguitar@yahoo.es
@Alejopal
@Alejopal 5 жыл бұрын
Muy buen video, me ha grada la forma como explicas y las notas graciosas que pones.
@carolinarodriguezgalicia4797
@carolinarodriguezgalicia4797 6 жыл бұрын
Muy buena explicación crack❤
@camilolopez1936
@camilolopez1936 5 жыл бұрын
Excelente video, entendí a nivel teórico cómo se resuelve el ejercicio. Muchas gracias ^^
@nasserelbacha3458
@nasserelbacha3458 3 жыл бұрын
No sabía que ibai daba clases de programación
@ignaciodelgado99
@ignaciodelgado99 8 жыл бұрын
Muy interesante y explicativo. Like
@marcozini8915
@marcozini8915 4 жыл бұрын
Propongo una solución simple, simple y sobre todo mnemotécnica. La regla es la siguiente: - en un movimiento mueva el disco más pequeño, de forma circular (apuestas: a -> b -> c -> b, -> a, etc.), - en el siguiente, debe realizar la única operación posible, - en el siguiente movimiento, mueva el disco más pequeño nuevamente de forma circular, - en el siguiente movimiento, se ve obligado a realizar la única operación posible y así sucesivamente, hasta que todos los discos hayan sido traídos de la estaca "a" a la estaca de destino final "c". Esta regla también corrige el primer movimiento para discos impares, ya que el primer movimiento del disco más pequeño se repite desde a -> b y desde b -> c. Espero haber sido claro, gracias y disfruten.
@perezsaul
@perezsaul Жыл бұрын
GRACIASS, toma tu merecido like y me suscribo
@spike_wav
@spike_wav 4 жыл бұрын
buen doble tempo , ya debes ir a batallar en la redbull sobrado le ganas a khan
@albertvolcom730
@albertvolcom730 5 жыл бұрын
Espera espera espera. También enseñas matemáticas? Esto se ha puesto más interesante de lo que creía
@cesarmaat
@cesarmaat 5 жыл бұрын
Aprendi mas historia :'vv
@angiecruz5896
@angiecruz5896 5 жыл бұрын
muy bien,me sirvio mucho a resolver mi tarea
@davidhernandeze
@davidhernandeze 9 жыл бұрын
Respira un poco, algunos no procesamos tan rápido
@gamingprooriginaljesse8264
@gamingprooriginaljesse8264 7 жыл бұрын
ami me parece bien explicado gracias :)
@Pivex10
@Pivex10 9 жыл бұрын
Genial vídeo. Gracias.
@DevD_82
@DevD_82 Жыл бұрын
Quién diría que ibai explicara temas de programación, un abrazo maquina!
@gvetri18
@gvetri18 9 жыл бұрын
Los memes son lo mejor jajaja.
@acostamartin1997
@acostamartin1997 5 жыл бұрын
Alguien puede explicarme en qué caso práctico uno programaría usando recursividad??
@rockarlandy
@rockarlandy 5 жыл бұрын
en un metodo iterativo es más optimo que el uso de ciclos que tienen los lenguajes de programacion por defecto
@AndreuPinel
@AndreuPinel 2 жыл бұрын
La recursividad se utiliza cuando uno no sabe el nº de capas que tiene que recorrer el algoritmo. Un ejemplo muy sencillo es contar los elementos de una estructura fractal irregular, como podría ser un árbol o la estructura de un disco duro (hojas - ficheros, ramas - carpetas, subramas - subcarpetas). Imaginemos que tú quisieras contar el nº de hojas de cualquier arbol del mundo, y de entrada tú no vas a saber cuántas ramas/sub-ramas tiene cada árbol, sólo sabes que todos tienen un tronco; podrías hacer algo tal como: resultado = Funcion_Contar_Hojas(tronco) // 1ª llamada Funcion_Contar_Hojas(rama) { resultado = 0 foreach (hoja in rama) { resultado = resultado + 1 } foreach (subrama in rama) { resultado = resultado + Funcion_Contar_Hojas(subrama) // recursividad. } return (resultado) } En aquellos problemas en los que de entrada tú sabes el nº de bifurcaciones (como en Hanoi, que siempre son 3 torres, o en factoriales, que es una única torre "de bajada"), la recursividad no es la mejor solución para programar por el alto consumo de recursos, en su lugar se utiliza (o debería utilizar) la iteración. Sin embargo, a pesar de que en programación en el mundo real son dos ejemplos en los que la recursividad sería considerada una "mala praxis", son ejemplos que ayudan a entender el concepto de forma muy sencilla. pseudo-código para el problema del factorial en iteración Funcion_Factorial(numero) // se va a presuponer que el parámetro "numero" siempre va a ser un nº natural (es decir, entero y positivo) { resultado = 1 while (numero > 1) { resultado = resultado * numero numero = numero - 1 } return (resultado) }
@acostamartin1997
@acostamartin1997 2 жыл бұрын
@@AndreuPinel genial! Muchas gracias por la explicación muy completa
@HeyChobe
@HeyChobe 5 жыл бұрын
Gracias es justo la explicación del algoritmo que necesitaba
@julioc.rojasa.3757
@julioc.rojasa.3757 8 жыл бұрын
Muy bueno el video me ayudó de mucho
@Martin-cu9hw
@Martin-cu9hw 5 жыл бұрын
Bastante Interesante !! =)
@ax3l03
@ax3l03 8 жыл бұрын
una duda, en el pseudocódigo dice que si n=1 se debe de mover de O a A; A es el destino, cierto? buen vídeo, por cierto. :)
@makigas
@makigas 8 жыл бұрын
+Axel Cervantes No, el destino es D. A es Auxiliar. Veo en el subtitulado que no lo menciono. Debería poner alguna nota cuando pueda para que no quede duda.
@AndreuPinel
@AndreuPinel 2 жыл бұрын
@@makigas El caso es que aunque por voz lo explicas bien, en la imagen está mal dado que aparece A y no D, tanto en el "if" como en el "else" (revisa el tramo del vídeo de 3:15 a 3:35 porque en ambas partes de la condición, el movimiento de un único disco es errónea, también en la traducción a pseudo-código). Además, ya como puntilla, añado que la condición la has diseñado como "if (n=1) { a } else { b }", lo cuál entraría en una recursividad incontrolada si en la primera llamada n=0 (o negativo, aunque no tenga sentido). En su lugar yo cambiaría la condición por "if (n>1) { b } else { a }" (se sobreentiende que los métodos apilar/desapilar tienen controlado la casuística de que no haya discos en la torre origen; aunque en cualquier caso no entraría en una recursividad infinita, algo que siempre es peor que un error incontrolado). En realidad la mejor solución para mí siempre ha sido: "if (n>0) { b }", sin "else", porque es más limpio y no hay riesgo de error incontrolado en apilar/desapilar, pero a cambio sería ligeramente menos óptimo por entrar dos veces más en el algoritmo cada vez que se llega por n=1 (aunque en ambas es "entrar, no hacer nada, salir", lo cuál sería imperceptible). Mover_Varios_Discos (NumDiscos, TO, TD, TA) { if (NumDiscos > 0) { Mover_Varios_Discos(NumDiscos - 1, TO, TA, TD) Mover_Un_Disco(TO, TD) Mover_Varios_Discos(NumDiscos - 1, TA, TD, TO) } } A pesar de mis observaciones (con intención constructiva) aclarar que me ha gustado mucho el vídeo (Like +1), incluso te animo a añadirle dos partes más: 1) Mostrar porque, a diferencia de con el algoritmo de factorial (donde el recursivo y el iterativo son prácticamente idénticos), el algoritmo recursivo de las torres de Hanoi queda tan elegante. Explicar que esto es dado a que en iterativo el algoritmo tiene que controlar - o encontrar - cuáles son los discos superiores de cada torre, lo que hace que la "lectura humana" del algoritmo sea más difícil ya que uno tiene que saber el patrón de movimientos de la solución. En cambio, con el recursivo la única visión que uno necesita es la global de los 3 movimientos * mover todos los discos menos uno de Origen a Auxiliar * mover el disco restante de Origen a Destino * mover los discos de Auxiliar a Destino. 2) Mostrar porque en el algoritmo recursivo no funciona la visión global de (aunque a priori parezca más óptimo ya que no habría tanta recursividad) * mover disco pequeño de Origen a Auxiliar * mover en recursivo el bloque de discos restantes de Origen a Destino * mover disco pequeño de Auxiliar a Destino
@troncarl
@troncarl 8 жыл бұрын
Me habeis salvado el culo tio,este video es la mera hostia
@xxjjstillxx8709
@xxjjstillxx8709 4 жыл бұрын
no entendi, el codigo siempre se va a meter en "hanoi" y no va a pasar a las siguientes lineas de codigo
@diegonanamejia1510
@diegonanamejia1510 4 жыл бұрын
hasta que llegue al caso base cosa que todas las metidas de hanoi que hubieron detras se resuelven
@lunita6906
@lunita6906 5 жыл бұрын
porque n-1?
@ngry-k7381
@ngry-k7381 4 жыл бұрын
ni siquiera estoy viendo esto en la u pero ya lo entendi xD bueno almenos en teoria.
@EdukalCancunMexico
@EdukalCancunMexico 7 жыл бұрын
Interesante solucion
@zeidadelosreyesrodriguezme9729
@zeidadelosreyesrodriguezme9729 8 жыл бұрын
Muy bueno el video jajaja
@maxiivallejos622
@maxiivallejos622 7 жыл бұрын
que wen video!! :')
@pjaramayoful
@pjaramayoful 7 жыл бұрын
Shiiuuffff que talento para hablar tan rápido y pronunciar bien.
@carlosprocrastianndo
@carlosprocrastianndo 5 жыл бұрын
buen video pero el pseudocodigo no esta bien igual gracias ya con eso ya lo pude hacer yo like
@julioverne3825
@julioverne3825 9 жыл бұрын
Brillante.
@j0kers814
@j0kers814 4 жыл бұрын
Graciaas !
@horseskull91
@horseskull91 5 жыл бұрын
por que "n-1"?
@kevin-ff7wz
@kevin-ff7wz 4 жыл бұрын
no viste el ejemplo de las torres de hanoi? primero movio los elementos de arriba -1, ese -1 es el elemente mas grande.
@luisdavidcastrocoronado4107
@luisdavidcastrocoronado4107 9 жыл бұрын
Te Felicito
@primc6962
@primc6962 7 жыл бұрын
Eres un Crrrrack
@laniakea1501
@laniakea1501 3 жыл бұрын
aiuda estoy procrastinando :v
@TioTIZODioxdelaTiza
@TioTIZODioxdelaTiza 9 жыл бұрын
Muy interesante :D
@DrJonesJazzMore
@DrJonesJazzMore 4 жыл бұрын
buena alexelcapo
@Chemaclass
@Chemaclass 9 жыл бұрын
Fabuloso :)
@mattiasezekielsayyago
@mattiasezekielsayyago 2 жыл бұрын
Interesante. +1like+1sub
@anslara89
@anslara89 8 жыл бұрын
hey habla mas despacio, no todos cpatamos todo a la velicdad de la luz,...me gusta tu método pero no entendemos a esa velocidad....
@ClintEsteMadera
@ClintEsteMadera 10 ай бұрын
Bajale la velocidad al video, cráneo!
@hoswardvilloria7705
@hoswardvilloria7705 4 жыл бұрын
en 0.25x para entender que carajos es lo que está explicando....
@BreinerFF-1
@BreinerFF-1 4 жыл бұрын
👌
@facusalmini6513
@facusalmini6513 3 жыл бұрын
Ibai, eres tu?
@williammoran3921
@williammoran3921 5 жыл бұрын
prefiero hacerlo manualmente
@danielgavirialopez4268
@danielgavirialopez4268 6 ай бұрын
3*3 = 9... 9 - 1 = 8 y no 7 XD
@juanfelipelinares7721
@juanfelipelinares7721 4 жыл бұрын
no entediii
@brunoeduardovigoparedes4808
@brunoeduardovigoparedes4808 Жыл бұрын
Pero no resolviste la torre de Hanoi con los 4 discos 😡
@jose_barreto
@jose_barreto 5 жыл бұрын
No se te entiende Tío ! lástima...
@makigas
@makigas 5 жыл бұрын
No pasa nada, he intentado mejorar un poco la manera de narrar desde entonces para hablar más despacio. Igual debería regrabar vídeos como estos en algún momento.
@calatiaszone7422
@calatiaszone7422 2 жыл бұрын
Suena como a ibai xD
@makigas
@makigas 2 жыл бұрын
Curioso, muchas veces han dicho que mi voz es como la de alexelcapo, pero lo de ibai es más nuevo.
@jeanb7158
@jeanb7158 3 жыл бұрын
no me vengas con cuentos
@soyio5383
@soyio5383 3 жыл бұрын
wtf parece ibai
@juankovac5557
@juankovac5557 2 жыл бұрын
la basura de pagina que pusiste para el juego no anda
@makigas
@makigas 2 жыл бұрын
Bro el vídeo tiene varios años, lo reviso por si hubiese muerto la web
@marcus99hd69
@marcus99hd69 9 жыл бұрын
english
@makigas
@makigas 9 жыл бұрын
No logro comprender tu comentario.
@susper2331
@susper2331 5 жыл бұрын
no explicas, sólo repites
@makigas
@makigas 5 жыл бұрын
Mis cojones en vinagre, pero ok.
@Guss_.1188
@Guss_.1188 5 ай бұрын
ibai??
Towers of Hanoi: A Complete Recursive Visualization
21:13
Reducible
Рет қаралды 505 М.
La terrible leyenda de las Torres de Hanói
7:33
Derivando
Рет қаралды 968 М.
When you have a very capricious child 😂😘👍
00:16
Like Asiya
Рет қаралды 18 МЛН
REAL or FAKE? #beatbox #tiktok
01:03
BeatboxJCOP
Рет қаралды 18 МЛН
小丑女COCO的审判。#天使 #小丑 #超人不会飞
00:53
超人不会飞
Рет қаралды 16 МЛН
La MAGIA de la RECURSIVIDAD
8:05
BettaTech
Рет қаралды 144 М.
¿Cuál es la Gráfica MÁS ALUCINANTE?
23:49
Mates Mike
Рет қаралды 523 М.
NumPy - ГЕРОИ НЕ НОСЯТ ПЛАЩИ
13:11
мыш
Рет қаралды 4,6 М.
Torres de Hanoi con Recursividad | EXPLICADO
20:12
blopa.e
Рет қаралды 6 М.
Самое простое объяснение нейросети
16:30
Программный Кот
Рет қаралды 134 М.
Venga va... ¿Qué es un TENSOR?
20:07
Mates Mike
Рет қаралды 265 М.
Ejercicios Java - Recursividad #1 - Factorial y suma de números
21:51
DiscoDurodeRoer
Рет қаралды 104 М.
Recursividad | FÁCIL de entender y visualizar | Recursión
12:04
When you have a very capricious child 😂😘👍
00:16
Like Asiya
Рет қаралды 18 МЛН