У меня есть функция рекурсии, которая печатает все допустимые комбинации сбалансированных скобок следующим образом:Рекурсия Печать Сбалансированный скобках
function addParen(upstock, downstock, sa)
{
if (upstock == 0 && downstock == 0)
{
Print(sa);
}
if (upstock > 0)
{
addParen(upstock - 1, downstock + 1, sa + "(");
}
if (downstock > 0)
{
addParen(upstock, downstock - 1, sa + ")");
}
}
Он непосредственно выводит результат в виде строки, как «((()))» или «()()() "для n = 3 (мы предполагаем 3 пары, число пар не важно). Тем не менее, я хочу, чтобы моя рекурсивная функция печаталась по одной каждой скобке всякий раз, когда начальная пустая строка объединялась с «(» или «)». Например, для первой комбинации я хочу, чтобы она печаталась как «(« then »(« then ») ("then") "then") ", а затем") ". Тогда он может действовать одинаково для второй комбинации. Возможно ли это сделать?
Вы хотите подождать входа пользователя? это то, что вы спрашиваете? («" ("") "") "") " – Zinov
Нет, то, что я хочу сделать, пока рекурсия продолжается, а строка - конкатенированный левой или правой скобкой, я сразу же хочу поставить эту скобку на экран. С помощью этой функции я всегда помещаю завершенную строку на экран всякий раз, когда подставка и нижний уровень равны нулю. –
Как вы ожидаете, что он напечатает вторую строку с заданным префиксом? Или вы ищете выход из дерева? – rici