Bonjour,
Pour mon cours d'informatique, j'ai pour tâche de créer un arbre généalogique. Cependant, je rencontre des difficultés avec une fonction que je suis en train de développer, car elle ne produit pas les résultats attendu. Je souhaite créer une fonction permettant de déterminer le nombre de générations de descendants qu'une personne a, que j'ai nommée 'fct_cache_profondeur'. Mon problème réside dans le fait que la fonction que j'ai programmée ne renvoie pas toujours la profondeur la plus élevée. Le problème se situe dans la partie du code où j'itère à travers la liste des enfants. En effet, cette boucle 'for enfant in liste_enfants' ne prend en compte que le premier enfant, ce qui fait que la fonction suit uniquement la descendance du premier enfant à chaque itération. Par exemple, sur l'arbre généalogique présenté ci-dessous, si je demande la profondeur de Agatha, ma fonction renverra 2, alors que la réponse correcte devrait être 4 (veuillez excuser la qualité médiocre de l'arbre). Merci d'avance pour votre aide. Pour info mapping est un dict qui a pour clé le nom de la personne et pour valeur une liste de ses enfants.
Code::def fct_cache_profondeur (nom, mapping, cache_profondeur = 0) : if nom in mapping.keys(): liste_enfants = mapping[nom] if len(liste_enfants) != 0: for enfant in liste_enfants: if construire_mapping(enfant) != []: return fct_cache_profondeur(enfant, construire_mapping(enfant), cache_profondeur + 1) return cache_profondeur else: return None
-----