Python - Árbol genealógico en python con recursividad.

 
Vista:

Árbol genealógico en python con recursividad.

Publicado por ivan (26 intervenciones) el 24/07/2023 00:56:24
Hola. Quiero saber como utilizar recursividad en este caso. Si alguien puede orientarme un poquito. Gracias. Tienes un árbol de descendencia de la siguiente forma:
https://i.stack.imgur.com/b7GJh.png


En este árbol Celestina y Julián son hijos de Eligio. Carmela y Rosendo son hijos de Celestina; y Fabián es hijo de Julián. Por último, José y Anastacia son hijos de Rosendo; y Berto, Fausto, Abel y Florina son hijos de Fabián. Carmela no tuvo descendencia.

La información del árbol fue guardada por generación en una tupla con el siguiente formato:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
descendencia = ('Eligio', [
                            ('Celestina', [
                                    ('Carmela', []),
                                    ('Rosendo', [
                                            ('José', []),
                                            ('Anastacia', [])
                                    ])
                            ]),
                            ('Julián', [
                                    ('Fabián', [
                                            ('Berto', []),
                                            ('Fausto', []),
                                            ('Abel', []),
                                            ('Florina', [])
                                    ]),
                            ])
    ])
Esta tupla guarda la información de cada persona en dos elementos. El primero es un string con el nombre de la persona y el segundo es una lista de tuplas con todos sus hijos.

Define una función encontrar_padres(arbol, nombre) la cual recibe como parámetros un árbol de descendencia y un nombre. La función deberá retornar una lista con todos los padres de nombre en orden de ascendencia . Si nombre no está en el arbol deberá retornar False.

Algunos casos basados en el árbol de ejemplo:

encontrar_padres(descendencia,'Fausto')

deberá retornar: ['Fausto', 'Fabián', 'Julián', 'Eligio']

ya que Fabián es el padre de Fausto, Julián es el padre de Fabián y Eligio es el padre de Julián.

encontrar_padres(descendencia,'Celestina')

deberá retornar: ['Celestina', 'Eligio']

encontrar_padres(descendencia,'Jorge')

deberá retornar: False

Recomendamos fuertemente pensar de forma RECURSIVA este ejercicio en lugar de forma iterativa.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Árbol genealógico en python con recursividad.

Publicado por ivan (26 intervenciones) el 26/07/2023 22:02:34
Esto es lo que estaba intentando. Defino encontrar_padres, creo una lista donde ingresare la ascendencia de nombre. Tengo que encontrar a nombre en árbol. Si el nombre es el primero en árbol lo agrego a la lista padres.
Tengo que llamar a la función encontrar_padres.

1
2
3
4
5
6
7
8
9
10
def encontrar_padres(arbol, nombre) :
       padres=[]
       for i in arbol:
            if i==nombre:
                padres.append(i)
                return padres
            else:
                encontrar_padres(arbol[1:], nombre)
                padres.append(i)
                return padres
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Árbol genealógico en python con recursividad.

Publicado por Juan (1 intervención) el 28/08/2023 21:00:24
Hola, lo has solucionado?
La lista se reinicia a cada pasada, te pasa lo que a mí, no sé cómo solucionarlo.
Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar