Мне задачка показалась интересной, решил перепостить сюда:
источник
В семействе Lisp-языков основной "синтаксис" языка состоит из комбинаций парных скобок ( ). При этом должен соблюдаться баланс — каждая открытая скобка должна иметь соответствующую закрытую, причем пары скобок не должны пересекаться. Нетрудно посчитать, что из двух пар скобок возможны только два корректных варианта "()()" и "(())".
Задача состоит в том, чтобы сгенерировать все возможные последовательности длины 2n, где n — количество пар скобок.