La recursión definitivamente no es algo fácil de entender al principio. La mayoría de la gente lucha con eso. La mejor manera de tener una idea real de cómo funciona sería mirar algunos algoritmos recursivos y rastrearlos a mano en papel para algunas entradas.
El trazado realmente ayuda. Por ejemplo, podrías tomar Merge Sort. Intente rastrear la ejecución del programa para varios arreglos. Una vez que te sientas cómodo, prueba algo como Clasificación rápida. Si tiene ganas de probar un poco más, la selección rápida debería ser otro buen ejemplo. Incluso podría intentar escribir un algoritmo de multiplicación recursiva simple.
Algo como:
- Cómo agregar un elemento a una matriz en Java
- ¿Cuándo se debe comenzar a resolver los problemas del Proyecto Euler en HackerRank? He resuelto alrededor de 50 en SPOJ, entonces, ¿es el momento adecuado para comenzar?
- ¿Qué enfoque debe adoptar en la vida, un paradigma codicioso o un enfoque de programación dinámica?
- ¿Cuáles son algunos algoritmos de redes neuronales artificiales?
- ¿Qué es un algoritmo de hashing seguro?
int multiply (int N, int m) {
/ * Multiplicar N por m * /
if (m == 1) devuelve N;
más{
retorno (N + multiplicar (N, m-1));
}
}
La mejor manera de familiarizarse con el diseño de algoritmos recursivos sería analizar los problemas que se encuentran bajo el paradigma “Divide y vencerás”. Básicamente, problemas en los que puede dividir el problema en múltiples subproblemas, resolver cada subproblema (posiblemente de manera recursiva) y luego combinar los resultados de cada subproblema para obtener el resultado final.
Estos enlaces deberían ser útiles:
Este video del profesor Brailsford debería ser útil:
Divide y vencerás | Set 1 (Introducción) – GeeksforGeeks: Introducción a dividir y conquistar
https://www.coursera.org/learn/a…: Un buen curso que introduce varias técnicas de diseño de algoritmos. La sección Divide y vencerás te ayudará con la recursividad.
https://www.coursera.org/course/…: Otro buen curso para ayudarte a entender
https://www.coursera.org/special…
¡Buena suerte! La recursión se convierte en un activo muy poderoso una vez que la dominas. No te preocupes si luchas con eso. Todos lo hacen.
EDITAR 1:
Una respuesta para una pregunta similar del único Thomas Cormen .
¿Cuál es una buena manera de entrenarse para sentirse cómodo pensando recursivamente sobre un problema? Muchas técnicas de diseño de algoritmos, como la programación dinámica, se basan en la recursividad. Por lo tanto, quiero ser bueno para pensar recursivamente.