¿Cómo resuelve / piensa en funciones recursivas complejas?
Para pensar recursivamente, deberías poder responder a esta pregunta: ¿cómo puedo transformar este problema en uno que sea similar, pero un poco más simple?
Algunos problemas son bastante recursivos por naturaleza. En realidad, es más fácil pensar en ellos de forma recursiva que pensar en usar algo como bucles. Muchos algoritmos de ordenación son así: puede definir una función de ordenación como “si tengo cero o uno o más elementos, estoy ordenado”. De lo contrario, clasifique la mitad izquierda, la mitad derecha y combine esas listas clasificadas “.
- ¿Cuál es el algoritmo de aprendizaje de Quora para su suministro de noticias?
- ¿Se puede utilizar el aprendizaje automático para encontrar públicos objetivo para anuncios?
- ¿Vale la pena tomar el curso de Algoritmos de Udacity?
- ¿Cuáles son los 100 deben resolver preguntas de SPOJ?
- ¿Cuál será el algoritmo de rotación correcto en C?
No consideraría que el problema que diste sea naturalmente recursivo. Resolviéndolo sin restricciones en la solución, usaría bucles.
Pero si quisieras resolverlo recursivamente, ¿cómo lo harías? Veamos: tiene 3 tipos de artículos y desea comprar uno de cada uno tan cerca del precio dado sin pasar. Bueno, ¿cómo podemos abordar esto para reducir los tipos de elementos?
Digamos que nuestro precio objetivo es $ 280. Consideremos qué sucede si compramos la primera camisa, que cuesta $ 44. Luego queremos comprar un cinturón y un par de zapatos que se acerquen lo más posible a $ 236 ($ 280- $ 44) sin tener que pasar. Esto es igual que el problema original, pero tiene un elemento menos. (¡Ta-da! Recursión).
Una vez que haya visto la mejor respuesta al comprar la primera camisa, la compara con la mejor respuesta si compra la segunda camisa, la tercera camisa, etc. y toma la mejor de todas.
Busque optimizaciones fáciles: si la primera camisa cuesta $ 350, esta sucursal no tiene solución. Asegúrese de que puede representar esto en su código, porque va a aparecer tarde o temprano. (Tal vez pueda comprar cualquier camisa, pero hay una camisa que cuesta $ 279 y no puede comprar ningún cinturón con ella, mucho menos zapatos).