¿Estoy aprendiendo demasiado lento si paso 4 meses para entender realmente la recursión?

La recursión es ciertamente un concepto difícil. Puede llevar tiempo entender y aplicar eso. Me tomó cerca de un mes darme cuenta de que no entendía la recursión y los 2 meses de práctica con varios algoritmos simples. Comience con ejemplos recursivos simples: (i) Calcule un factorial de un número (ii) Invierta un número entero (iii) Invierta una cadena que se ingresa a través del teclado (iv) Encuentre GCD de dos números (v) Suma de términos de Fibonacci (vi ) Realizar búsqueda binaria.

Algunos de nivel medio son: (i) Invertir una lista vinculada (ii) Imprimir una lista vinculada al revés (iii) Invertir una lista vinculada doble (iv) Convertir una lista vinculada doble en una espiral. (v) Recorrido en orden, pre-orden, post-orden de un árbol binario. (vi) Eliminar hojas de un árbol.

Los difíciles: (i) generan permutaciones de un conjunto de enteros o letras de una cadena. (ii) Encuentre si existen dos números cuya suma es igual a un número dado.

Confíe en mí, siempre habrá un problema recursivo que a cualquier persona en este mundo le resultaría difícil implementar. Estoy feliz de entender cómo funciona un programa recursivo. Mucha suerte y no te preocupes demasiado por el tiempo que tomas para aprenderlo.

No lo dice explícitamente, pero deduzco que está tratando de aprender sobre recursión en un contexto de programación . En cuyo caso, sí, “4 meses de trabajo duro” para “entender que la recursión es una función que se llama a sí misma, tiene un caso base y un caso recursivo” es solo una cantidad enorme de tiempo para comprender un concepto muy básico.

“Comprender” la recursión es una cuestión de pensamiento matemático, y específicamente una cuestión de matemáticas discretas; que lleva una buena cantidad de tiempo para aprender

La parte difícil tiene que ver con saber cuándo aplicar un enfoque recursivo a un problema y cuándo no hacerlo; y luego cómo definir un algoritmo apropiado. Cuando se trata de codificación, convertir una fórmula en código es generalmente muy simple (aunque hacer que la recursiva sea un poco más complicada puede ser un poco más difícil, al menos todavía me vuelve loco).

Mi conjetura es que realmente necesita obtener un buen curso de matemática discreta en su haber.

Como han dicho los demás, si tardó 4 meses en comprender la idea básica de la recursión, es posible que esté luchando con algunas nociones preconcebidas o conceptos erróneos que dificultan la comprensión. Tal vez usted tuvo un maestro pobre, o está trabajando con ejemplos engañosos. Las personas que comienzan sin nociones preconcebidas, correctamente enseñadas, generalmente pueden comprender el concepto en un período de tiempo bastante corto. No es difícil presentar una idea básica de una manera bastante intuitiva. La comprensión decente solo requiere un poco de práctica y repetición.

Sin embargo, si le tomó 4 meses captar la recursión a un nivel práctico , lo que significa que aprendió lo suficiente como para implementar el código de paso de árbol y demás, entonces lo está haciendo bastante bien.

Si tardó 4 meses en lograr una comprensión profunda de la recursión, por ejemplo, comprender cómo los combinadores en Y implementan la recursión con funciones anónimas y saber cómo razonar sobre la recursión mutua, está a la par con las carreras de teoría CS más decentes.

Combinador de punto fijo – Wikipedia

El tiempo de aprendizaje no me importa, pero 4 meses de recursión es bastante tiempo. Voy a decir esto, asegúrate de que entiendas el concepto, no te preocupes por el tiempo. Dado que estos son conceptos básicos y aparecen en casi todos los lenguajes de programación, recomendaré dedicar mucho tiempo a comprenderlos. Practicarlas hasta que seas extremadamente competente realmente te ayudará.

Depende de qué tan profundo sea el entendimiento por el que te estás esforzando. He conocido a estudiantes para los cuales divide y conquista algoritmos (es decir, muchos algoritmos recursivos) en los que toma un tiempo considerable (más de cuatro meses) para que haga clic . Está bien, siempre y cuando al menos comprendan los algoritmos disponibles. La intuición con algoritmos no es algo que se aprende de la noche a la mañana.

No, no lo creo.

Me tomó más tiempo que eso. En la medida en que entienda realmente el concepto y sepa cuándo y cómo aplicarlo, entonces habrá dominado un concepto necesario y altamente poderoso en informática. Bien hecho.

Lo que podría faltar es no ver un uso práctico para ello. Lo uso comúnmente en el procesamiento de directorios de computadoras. Llamo a un procedimiento con la ruta completa a un directorio. El procedimiento carga el directorio, e itera a través de cada elemento en él, regresando después de procesar cada elemento. Si un elemento en el directorio es un archivo, entonces el procedimiento hace lo que se supone que debe hacer para cada archivo. Si es otro directorio, el procedimiento se llama a sí mismo con la ruta completa a este subdirectorio.

Estás aprendiendo la forma en que aprendes.

No es demasiado lento a menos que haya una mejor manera de hacerlo más rápido o que le cueste algo imperativo.

No todo el mundo es un cohete a la luna en todo lo que hacen, pero si puedes aplicar lo que aprendes y puedes trabajar para aprender muchas cosas a la vez, simplemente acepta que tomará un tiempo y sigue avanzando.

La programación no es un sprint, ¡es un juego de resistencia!