Cómo resolver / pensar en funciones recursivas complejas

¿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 “.

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).

More Interesting

¿Cuáles son los algoritmos de clasificación considerados algoritmos codiciosos?

¿Hay diseñadores que diseñan algoritmos?

¿Cuáles son algunas de las lagunas en el algoritmo de reserva de entradas de irctc?

¿Qué son las estructuras de datos y por qué las usamos? ¿Cuál es su relación con los algoritmos?

Dado un gran diccionario de N frases cortas (1 o 2 términos) y una gran porción de texto, ¿puedo encontrar de manera eficiente las coincidencias para esas frases en el texto en tiempo sub-N, mientras perdono * los pequeños errores?

¿Podemos hacerlo mejor en complejidad de tiempo que el siguiente código para calcular la suma de los primeros 10 primos?

¿Cuáles son las aplicaciones de los diferentes métodos de búsqueda en la estructura de datos?

¿Qué es una explicación intuitiva de los algoritmos de gradiente proximal?

Conozco la implementación básica de diferentes estructuras de datos como árboles, gráficos, colas y muchos más para inserción, eliminación, recorrido. Ahora, ¿cómo procedo a construir un sistema operativo?

¿Cuál es una versión más amigable para principiantes de CLRS para algoritmos de aprendizaje? ¿Estaría rompiendo la entrevista de codificación?

¿Es posible simular / emular / codificar el poder de pensamiento de una CPU en una GPU?

Cómo usar el hash rodante y la búsqueda binaria para encontrar la subcadena común más larga

¿Qué prueba de primalidad se usa en las aplicaciones de software convencionales?

¿De dónde debería comenzar a aprender el algoritmo? ¿Debería unirme a uno de los MOOC disponibles o leer libros como 'Introducción a los algoritmos'?

¿Hay alguna manera de extraer la palabra principal de una lista de sinónimos que representa la lista?