Então aqui está o problema. Para um dado, n
precisamos gerar todos os parênteses válidos.
Por exemplo, para n=2
a saída possível será ()()
,(()))
Então tentei resolver usando recursão e retrocesso.
Pego duas variáveis, open_bracket e close_bracket junto com um ds para armazenar os parênteses.
Aqui está meu diagrama recursivo parecido
Então com isso eu tentei isso:
function generatePArenthesis(n, open_bracket=0, close_bracket=0, ds=[]){
if(open_bracket === n && close_bracket === n){
console.log(ds.toString());
return
}
if(open_bracket < n){
ds.push('(');
generatePArenthesis(n, open_bracket+ 1, close_bracket, ds);
}
if(close_bracket<open_bracket){
ds.push(')');
generatePArenthesis(n, open_bracket, close_bracket +1, ds);
}
}
generatePArenthesis(2)
quando executo este programa, n=2
ele parece produzir o diagrama recursivo acima. Mas não me dá a saída correta. Onde estou cometendo erro?
Restaurar
ds
após chamadas recursivas: