Tendencias del momento
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
¿Por qué deberías aprender recursión incluso si nunca la usarás?
Las soluciones recursivas te entrenan en algunas mentalidades:
1. En lugar de intentar generar la solución, a menudo comienzas con "¿cuál es la estructura de una solución válida?" y trabajas hacia atrás. Para algunos problemas, trabajar hacia atrás es mucho más fácil.
2. Cuando estás resolviendo el problema, es fácil distraerse con todos los "¿y si...?". Al resolver un problema de forma recursiva, a menudo te ves obligado a "ignorar" el 90% de los problemas y concentrarte en hacer bien solo una parte.
3. Lo que a menudo sería un caso "extremo" en una solución imperativa es un "caso base" en una recursiva. Pensar de forma recursiva a veces te obliga a no ignorar los casos extremos. Además, las soluciones recursivas hacen un uso intensivo de la coincidencia de patrones, por lo que te ves obligado a pensar en todas las situaciones que podrías encontrar.
Aquí hay un muy buen ejemplo: Leetcode 335 Cruce de sí mismo (problema difícil).
Viajas en una trayectoria espiral en una cuadrícula (es decir, siempre giras a la izquierda después de viajar cierta distancia hacia el norte, sur, este u oeste). La pregunta es: "dada la distancia de cada 'segmento' de la espiral en orden, ¿se cruzó la espiral a sí misma o no?"
Aunque la solución a esto no necesita ser una función que se llame a sí misma, la solución "bonita" utiliza propiedades recursivas:
1. si aún no hemos encontrado un cruce, entonces podemos asumir que no hay cruces o espirales inválidas en el pasado. Además, notamos que no importa si estamos viajando a la izquierda, a la derecha, hacia arriba o hacia abajo porque solo podemos girar a la izquierda. Lo único que nos importa es si los segmentos anteriores son paralelos a nuestro giro anterior y qué tan lejos están.
2. cuando giramos a la izquierda, hay un número extremadamente limitado de "segmentos" en la espiral con los que podemos chocar, lo cual es "recursivamente" cierto sin importar cuán grande se vuelva la espiral. Hay muchos datos pasados sobre la espiral que podemos ignorar.
3. Hay un número limitado de escenarios en tu giro anterior que afectan tu lógica: a) ¿viajaste lo suficientemente lejos como para no chocar con nada?, b) si no, ¿con qué podrías chocar potencialmente? (también limitado).
Lo molesto de los problemas difíciles de Leetcode es que de repente se vuelven fáciles si encuentras la clave. Pero esos conocimientos clave te llegarán de forma más natural si te has entrenado en programación recursiva.
No se trata solo de diseñar funciones que se llamen a sí mismas, sino de obligarte a descomponer el problema de tal manera que pueda resolverse con una función que se llame a sí misma. Cuantas más formas encuentres de descomponer un problema, más probable es que encuentres una solución "aha".
Obviamente, no necesito hacer Leetcode en mi profesión, pero sí necesito encontrar formas creativas de descomponer problemas para que se vuelvan comprensibles, y el entrenamiento en recursión definitivamente ha ayudado con eso.

1,67K
Parte superior
Clasificación
Favoritos