¿Dónde puedo aprender conceptos de recursión?

Lo que me ayudó, personalmente, a comprender la recursión fue el concepto de búsqueda de profundidad primero (DFS).

Tuve problemas para aprender la recursividad, hasta el punto en que pensé que nunca podría realmente “entenderla” y escribir algoritmos que la usaran efectivamente. Eso fue porque pensamos en ello con ejemplos como la Torre de Hanoi y el rompecabezas de las Ocho reinas. Esos ejemplos fueron, para mí, un poco demasiado complejos para entender el concepto básico, y rápidamente me confundiría y, frustrado, me rendiría.

DFS es, en mi opinión, la madre del algoritmo recursivo. Casi todas las recursiones que escribí (por ahora bastantes) comenzaron como una o podrían reformularse como una sin mucha molestia. La gran ventaja de DFS es que es muy fácil dibujar en una hoja de papel: no perderá la noción. Cada llamada recursiva es solo otro nodo, y si llega a una hoja, retrocede y busca el próximo hijo posible que aún no generó.

Comience con programas ingenuos como imprimir una cadena n veces, factorial de un número, generar series de Fibonacci usando recursividad y pasar gradualmente a algoritmos gráficos avanzados que usan recursividad.

Además, puede intentar imprimir los valores de las variables locales y globales en cada paso de recursión para comprender lo que está sucediendo en el back-end.

Además, puede dirigirse al curso Inrtoduction to Python en Coursera por el Dr. Chuck. Proporcionan un intérprete de Python en línea donde puede visualizar la pila de recursión sobre la marcha.

PD: escribir esta respuesta desde un teléfono móvil. Actualizará los enlaces de respuesta lo antes posible.

No puedo decirte exactamente dónde aprender sobre la recursividad, debes aprender lo básico de la recursividad (especialmente cómo y cuándo se detendrá tu función recursiva) y luego practicar. Hay un buen problema establecido en la recursividad en http://www.codingbat.com (en java).