от
** Вопрос в том, чтобы написать функцию для генерации всех комбинаций правильно сформированных скобок длиной 2 * n. * Например, при n = 3 набор решений: "((()))", "(() ())", "(()) ()", "() (())", "() () ()". * первый код, в котором я делаю вызов функции, как это   GenerateParenthesis (n, l 1, r, ans) работать нормально и вывести желаемый результат: ((())) Но во втором коде, когда я делаю Fuction Call, как   L = L 1; GenerateParenthesis (n, l, r, ans) ; дать вывод вроде:))). Зачем? // l используется для открытой скобки (слева) и r используется для закрывающей скобки (справа) Вот два кода void GenerateParenthesis (int n, int l, int r, vector

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

1 Ответ

0 голосов
от
В первом случае при каждом рекурсивном вызове
GenerateParenthesis(n, l   1, r, ans)
результат
l 1
и
r 1
передается только вызываемому абоненту и не меняет значение переменной Во втором случае при каждом рекурсивном обращении к
GenerateParenthesis(n, l, r, ans)
результат
l 1
и
r 1
передается в вызываемый объект, а также изменяет значение переменной LPTVxrJHCHC5 Поэтому каждый раз, когда функция возвращается из своих рекурсивных вызовов, значение переменной
l
и
r
будет различным в обоих случаях, и вычисления могут отличаться.     
Добро пожаловать на сайт ByNets, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...