Pourquoi ma fonction récursive retourne true?
Fermé
helloworld
-
17 août 2020 à 19:33
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 18 août 2020 à 11:45
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 18 août 2020 à 11:45
A voir également:
- Pourquoi ma fonction récursive retourne true?
- Ecran retourne - Guide
- Acronis true image - Télécharger - Sauvegarde
- Testingcheatsenabled true - Forum Jeux vidéo
- True caller - Télécharger - Divers Communication
- Fonction si et - Guide
1 réponse
Reivax962
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 008
Modifié le 18 août 2020 à 09:41
Modifié le 18 août 2020 à 09:41
Bonjour,
Le problème, c'est que tu n'utilises jamais la valeur de retour de l'appel récursif à ta fonction racineSommeEnfant. Le
Du coup, ta fonction peut bien renvoyer False, l'exécution de l'appelant continue comme si de rien n'était...
Pour aller au plus simple, je modifierais ta boucle for comme suit :
Xavier
Le problème, c'est que tu n'utilises jamais la valeur de retour de l'appel récursif à ta fonction racineSommeEnfant. Le
returnne se propage pas tout seul dans la pile d'appels.
Du coup, ta fonction peut bien renvoyer False, l'exécution de l'appelant continue comme si de rien n'était...
Pour aller au plus simple, je modifierais ta boucle for comme suit :
for (Tree child2 : t) {
if (somme != child2.getParent().getValue() || !racineSommeEnfant(child2))
{
System.out.println("here false");
return false;
}
}
Xavier
18 août 2020 à 11:13
18 août 2020 à 11:45
for (Tree child2 : t) { if (somme == child2.getParent().getValue()) { boolean resultatEnfants = racineSommeEnfant(child2); if (!resultatEnfants) { return false; } } else { System.out.println("here false"); return false; } }Ça fait exactement la même chose que mon code, mais en se rapprochant plus du tien comme ça tu peux voir la différence.