Recursividad(1)
Cómo escribió alguien: «Lo primero para entender la recursividad, es entender la recursividad«
Veamos un ejercicio al respecto.
Copiar, pegar, ejecutar, observar… ¡La CPU eres tú!
«»»
Created on Fri Oct 6 20:45:38 2023
Dada una lista de enteros, que a su vez pueden estar formando listas: aplanar la lista; ej:
de: [1, [2, 3], [4, [5, 6, [7, [8, [[[[[9,45]]]], 10, 11]]]]]]
obtener:[1, 2, 3, 4, 5, 6, 7, 8, 9, 45, 10, 11]
@author: Juan Monroy Camafreita, de https://academia.codigopiton.com/
«»»
def aplanar_lista(lista): # algoritmo recursivo
plana = []
for elemento in lista:
if type(elemento) != list:
plana.append(elemento)
else:
plana.extend(aplanar_lista(elemento)) # llamada recursiva
return plana
lista = [1, [2, 3], [4, [5, 6, [7, [8, [[[[[9,45]]]], 10, 11]]]]]]
print(aplanar_lista(lista))
Adjunto una sucinta explicación o algo parecido:
«»»
Created on Mon Nov 6 10:35:18 2023
«»»
def aplanar_lista(lista): # algoritmo RECURSIVO
plana = []
# Ha de comprenderse que el for elemento in lista PROFUNDIZA un nivel cada iteración
for elemento in lista:
print('Elemento>>',elemento, 'Tipo de ese elemento',type(elemento))
if type(elemento) != list: # caso base: si no es list: es natural: añadir a plana
print('Está en el IF',elemento)
plana.append(elemento)
else:
print('Está en el Else',elemento) #Si es lista es que está anidada, llamar recursivamente
plana.extend(aplanar_lista(elemento)) # llamada recursiva
return plana
‘Primero hay que comprender que hace type’
a= ‘La luna llena es preciosa’
b= 34
c=[2,3]
d=(1,2,3)
print(type(a))
print(type(b))
print(type(c))
print(type(d))
‘Luego hay que comprender que hace append’
plana = []
plana.append (13)
print(plana)
‘En tercer lugar hay que comprender que hace extend’
plana.extend([[5,67]])
print(plana)
‘Ahora vamos a ver como se aplana la lista siguiente de seis elementos’
lista = [125,[[[2, 3]]],9] #lista de naturales : debe de dar: [125,2,3,9]
print(aplanar_lista(lista))
‘Podríamos utilizar la lista original u otra:lista = [1, [2, 3], [4, [5, 6, [7, [8, [[[[[9,45]]]], 10, 11]]]]]]’
(Nota.- ¿Cómo resolver el problema sin recursividad?)



Debe estar conectado para enviar un comentario.