Está en la página 1de 2

TEORIA DE LA COMPUTACIÓN TALLER 1

MARIO ROJAS – ING DE SISTEMAS


1) Dar una función recursiva de u R

// Definición de la función recursiva para calcular potencias


function potenciaRecursiva(base, exponente) {
// Caso base: si el exponente es 0, cualquier número elevado a 0 es 1
if (exponente === 0) {
return 1;
}
// Caso en el que el exponente es positivo
else if (exponente > 0) {
// Calcula la potencia restando 1 al exponente y multiplicando la base por sí
misma
return base * potenciaRecursiva(base, exponente - 1);
}
// Caso en el que el exponente es negativo
else {
// Calcula la inversa de la potencia para exponentes negativos
// Tomando el inverso de la base elevada al exponente positivo equivalente
return 1 / potenciaRecursiva(base, -exponente);
}
}

// Ejemplos de uso
console.log(potenciaRecursiva(2, 3)); // Debería imprimir 8 (2^3)
console.log(potenciaRecursiva(5, -2)); // Debería imprimir 0.04 (5^(-2))

2) Dar un ejemplo de un alfabeto Σ y dos lenguajes diferentes A, B sobre Σ tales que A · B =


B · A.

Alfabeto Σ: {a, b}

Lenguaje A: {a, b} (Este lenguaje contiene todas las cadenas formadas por los
símbolos "a" y "b".)

Lenguaje B: {λ, a, b, aa, ab, ba, bb, aaa, aab, aba, abb, baa, bab, bba, bbb, ...} (Este
lenguaje contiene todas las cadenas posibles de "a" y "b", incluyendo la cadena
vacía ε.)
3) PROBLEMA 3

A. Lenguaje de cadenas que comienzan con 123 y terminan con 321 (Σ = {1, 2, 3}):
Expresión regular: *123.321
B. Lenguaje de cadenas con un número par de símbolos (Σ = {a, b, c}): Expresión regular:
(a+b+c)((a+b+c)(a+b+c))
C. Lenguaje de cadenas con un número impar de símbolos (Σ = {a, b}): Expresión regular:
(a+b)(a+b)((a+b)(a+b))((a+b)(a+b))*...
D. Lenguaje de cadenas con un número par de 'a's o un número impar de 'b's (Σ = {a, b,
c}): Expresión regular: (a(aa) + (b(bb))+)***
E. Lenguaje de cadenas con el segundo símbolo como '2' y el penúltimo símbolo como '1'
(Σ = {0, 1, 2}): Expresión regular: (0+2)(1+2)*(2+1)

4) PROBLEMA 4

A. Lenguaje de cadenas que tienen por lo menos un 0 y por lo menos un 1: Expresión


regular: **(0.1) |(1.0)
B. Lenguaje de cadenas que tienen a lo sumo dos 3s consecutivos: Expresión regular:
(ε|[^3]3[^3]3[^3]|[^3]3[^3]|[^3])
C. Lenguaje de cadenas cuyo quinto símbolo es un 2: Expresión regular:
(.[^2]2[^2]){4}.{0,3}2.{0,3}
D. Lenguaje de cadenas de longitud par mayor o igual a 2, formadas por 0s, 1s, 2s y 3s
alternados: Expresión regular: (([013][013])+|([0123][0123])+)
E. Lenguaje de cadenas cuya longitud es mayor o igual a 20: Expresión regular: .{20,}

También podría gustarte