[ Foro de C# ]

Algoritmo recursivo devuelva list con todos los pares posibles de () dado valor de entrada n

06-Dec-2014 18:24
Invitado (raulinupf)
1 Respuestas

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!


08-Dec-2014 13:26
Nacho Cabanes (+84)

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.)