Хм - что-то тут слишком сложно найти то что кешировать. Вижу только одно улучшение - сделать greedy подход, сначала проходить по самым большим номиналам, и пытаться начать с них ( что в теории может ускорить) и отбривать все ветви рекурсии если уже был найден более меньший ответ