`
Код: Выделить всё
def generateParenthesis(self, n: int) -> List[str]:
def backtrack(open_count, close_count, curr, res):
print(f"backtrack({open_count}, {close_count}, {curr})")
if open_count < n:
backtrack(open_count + 1, close_count, curr + "(", res)
if close_count < open_count:
backtrack(open_count, close_count + 1, curr + ")", res)
if len(curr) / 2 == n:
res.append(curr)
return
res = []
backtrack(0, 0, "", res)
return res
Вывод отладки для n = 3:
Вот результат, который я получаю, когда запускаюgenerateParenthesis(3):
Код: Выделить всё
`
backtrack(0, 0, )
backtrack(1, 0, (
backtrack(2, 0, ((
backtrack(3, 0, (((
backtrack(3, 1, ((()
backtrack(3, 2, ((())
backtrack(3, 3, ((()))
backtrack(2, 1, (()
Мой вопрос:
Как происходит переход вывода от возврата (3, 3) к возврату (2, 1)?
Я вижу, что после достижения возврата (3, 3) функция возвращается к возврату (3, 2), а затем возвращается к возврату (2, 1), но мне трудно понять, как функция возвращается и что вызывает это переход.
Может ли кто-нибудь объяснить этот переход в стеке рекурсии и роль возврата в этом случае?
Подробнее здесь: https://stackoverflow.com/questions/798 ... to-backtra