На сочетания есть простой рекурсивный алгоритм, размещения из каждого сочетания получаются пермутациями. Не уверен в эффективности, но работае
Правильно делаете, что не уверены в эффективности рекурсии!
При решении другой комбинаторной задачи мы выявили, что рекурсия минимум в 3 раза уменьшает скорость работы программы.
P.S. В этой связи мы, например, переписали стандартный алгоритм поиска файлов по маске в файловой системе.
Убрали рекурсию и сделали все без рекурсии.
Эффективностью нового алгоритма не нарадуемся!