[ Foro de C# ]
Hola a todos!
soy un principiante con c# y se me ha planteado lo siguiente:
hacer un algoritmo recursivo que devuelta una lista de strings con todos los pares de posibles de () dado un valor de entrada n.
Por ejemplo: n= 2
salida esperada: (()), ()()
ejemplo n=3
salida esperada: ((())), (())(), ()(()), ()()(), (()())
....
la verdad es q no se x donde empezar, me podéis echar una mano?
Gracias!
saludos!
Como imagino que sabes, una función recursiva tiene un caso base y un caso general.
Como caso base, piensa cual la secuencia de pares de paréntesis más simple (n=1 o incluso n=0).
Con caso general, piensa cómo pasarías si ya sabes la solución para n=1 a las posibles soluciones para n=2, o en general del caso n al caso n+1. En este problema, ese paso sería: ()+caso anterior, o caso anterior+(), o (+caso anterior+)
Finalmente, debes tener en cuenta que ese algoritmo general te provocará la aparición de duplicados (es fácil de ver si haces a lápiz el caso n=2), que en general es habitual que tengas que eliminar.
Si tienes poca experiencia con recursividad, posiblemente te interesará leer antes (y tratar de hacer los ejercicios propuestos) este apartado:
http://www.nachocabanes.com/csharp/curso2015/csharp05j.php
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)