Recursividad
Publicado por ivan (26 intervenciones) el 19/07/2023 21:22:52
Estoy aprendiendo sobre recursividad en Python. Entiendo que para esto, la idea es que pensar un caso base , que sea simple de resolver y luego el paso recursivo que llama a la misma función pero ya con el problema mas pequeño, y que este se va a ir acercando al caso base. Pero antes de el paso recursivo tiene que estar pensada una condición , que cuando se cumpla el programa se detenga y me retorne el resultado esperado , sin continuar en una recursividad infinita. Entiendo algunos ejemplos con el de cuenta regresiva u algunos otros ejemplos, pero no estoy lográndolo con este ejercicio de listas. Agradecido de orientacion sobre como pensar para resolver esto y armar el codigo. Gracias.
Tienes una lista de listas. Cada lista interior contiene listas o strings. Por ejemplo, la lista se podría ver de la siguiente forma:
Deberás definir la función recursiva en_orden(lista, ordenada), la cuál recibe como parámetro una lista en el formato anterior y una lista vacía. La función deberá llenar la lista ordenada de la siguiente manera:
Primero se debe agregar (append) a ordenada , la lista recibida, y luego deben agregarse a continuación cada una de las listas dentro de lista.
Deberá imprimir:
[['a'], [['b'], 'c']] ['a'] [['b'], 'c'] ['b']
Ayuda: La instrucción type(x) retorna el tipo de la variable x. Por ejemplo, para saber si una variable es del tipo str, puedes hacer la comparacion type(x) == str. Lo mismo se puede hacer con el tipo list.
Esto es lo que estoy intentando entre otros intentos , pero no estaría funcionándome.
Tienes una lista de listas. Cada lista interior contiene listas o strings. Por ejemplo, la lista se podría ver de la siguiente forma:
1
2
3
4
lista = [
[['a'], ['b', 'c']],
['d', ['e']]
]
Primero se debe agregar (append) a ordenada , la lista recibida, y luego deben agregarse a continuación cada una de las listas dentro de lista.
1
2
3
4
5
lista = [['a'], [['b'], 'c']]
ordenada = []
en_orden(lista, ordenada)
for x in ordenada:
print(x)
Deberá imprimir:
[['a'], [['b'], 'c']] ['a'] [['b'], 'c'] ['b']
Ayuda: La instrucción type(x) retorna el tipo de la variable x. Por ejemplo, para saber si una variable es del tipo str, puedes hacer la comparacion type(x) == str. Lo mismo se puede hacer con el tipo list.
Esto es lo que estoy intentando entre otros intentos , pero no estaría funcionándome.
1
2
3
4
5
6
7
8
9
def en_orden(lista, ordenada):
ordenada=[]
ordenada.append(lista)
for x in ordenada:
if type(x)== list:
print(x)
en_orden(lista[1:], ordenada)
else:
return ordenada.append(lista[0])
Valora esta pregunta


0