Cómo encontrar todas las combinaciones de monedas cuando se le da un valor en dólares

Encontré un fragmento de código que estaba escribiendo para la preparación de la entrevista hace unos meses.

Según el comentario que tenía, estaba tratando de resolver este problema:

Dado el valor en dólares de algunos centavos (por ejemplo, 200 = 2 dólares, 1000 = 10 dólares), encuentre todas las combinaciones de monedas que conforman el valor en dólares. Solo se permiten monedas de un centavo (1 ¢), monedas de cinco centavos (5 ¢), monedas de diez centavos (10 ¢) y cuartos (25 ¢).

Por ejemplo, si se dio 100, la respuesta debería ser:

4 quarter(s) 0 dime(s) 0 nickel(s) 0 pennies  
3 quarter(s) 1 dime(s) 0 nickel(s) 15 pennies  
etc.

Creo que esto se puede resolver de manera iterativa y recursiva. Mi solución recursiva es bastante defectuosa, y me preguntaba cómo otras personas resolverían este problema. La parte difícil de este problema fue hacerlo lo más eficiente posible.

Respuestas a la pregunta(30)

Su respuesta a la pregunta