IMG_3011.jpeg
Document Details

Uploaded by QuieterEarthArt25
University of Surrey
Full Transcript
# Algoritmos y Estructuras de Datos ## Clase Práctica 1 ### Ejercicio 1 Implementar las siguientes funciones utilizando recursión sobre naturales. Incluir los casos base y recursivos. * `sumar(n)`: Suma los primeros n naturales. * `potencia(b, n)`: Calcula $b^n$, asumiendo $n \ge 0$. * `div...
# Algoritmos y Estructuras de Datos ## Clase Práctica 1 ### Ejercicio 1 Implementar las siguientes funciones utilizando recursión sobre naturales. Incluir los casos base y recursivos. * `sumar(n)`: Suma los primeros n naturales. * `potencia(b, n)`: Calcula $b^n$, asumiendo $n \ge 0$. * `division(n, m)`: Calcula la división entera de n dividido m, asumiendo $n \ge 0$ y $m > 0$. * `digitos(n)`: Cuenta la cantidad de dígitos de n, asumiendo $n \ge 0$. ### Ejercicio 2 Implementar las siguientes funciones utilizando recursión sobre listas. Incluir los casos base y recursivos. * `pertenece(x, s)`: Determina si el elemento x pertenece a la lista s. * `ultimo(s)`: Devuelve el último elemento de la lista s (asumir lista no vacía). * `reverso(s)`: Devuelve la lista s con los elementos en orden inverso. * `juntar(s, t)`: Concatena la lista s con la lista t. * `maximo(s)`: Devuelve el máximo elemento de la lista s (asumir lista no vacía). * `ordenada(s)`: Determina si la lista s está ordenada de menor a mayor. ### Ejercicio 3 Escribir una función recursiva `aplanar(s)` que reciba una lista posiblemente anidada y devuelva una lista sin anidamiento que contenga los mismos elementos en el mismo orden. Por ejemplo: ```python aplanar([1, [2, [3, 4], 5], 6]) ➞ [1, 2, 3, 4, 5, 6] aplanar(['a', ['b', ['c', 'd'], 'e'], 'f']) ➞ ['a', 'b', 'c', 'd', 'e', 'f'] ``` ### Ejercicio 4 Implementar una función recursiva `reemplazar(s, x, y)` que reemplace cada ocurrencia de x por y en la lista s. Por ejemplo: ```python reemplazar([10, 20, 10, 30, 10, 10], 10, 5) ➞ [5, 20, 5, 30, 5, 5] reemplazar(['manzana', 'banana', 'manzana'], 'manzana', 'naranja') ➞ ['naranja', 'banana', 'naranja'] ``` ### Ejercicio 5 Implementar una función recursiva `substrings(s)` que tome un string s y devuelva una lista con todos sus substrings. Por ejemplo: ```python substrings('abc') ➞ ['a', 'ab', 'abc', 'b', 'bc', 'c'] substrings('xyz') ➞ ['x', 'xy', 'xyz', 'y', 'yz', 'z'] ``` ### Ejercicio 6 Implementar una función recursiva `combinaciones(s, n)` que tome una lista s y un número n y devuelva una lista con todas las combinaciones posibles de n elementos de s. Por ejemplo: ```python combinaciones([1, 2, 3], 2) ➞ [[1, 2], [1, 3], [2, 3]] combinaciones(['a', 'b', 'c', 'd'], 3) ➞ [['a', 'b', 'c'], ['a', 'b', 'd'], ['a', 'c', 'd'], ['b', 'c', 'd']] ```