Transformer de manière récursive

Fermé
agtnt - Modifié le 15 déc. 2020 à 13:54
yg_be Messages postés 23363 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 2 décembre 2024 - 15 déc. 2020 à 15:15
Bonjour,

Dans le cadre d'un projet d'informatique, je dois coder une fonction qui si une proposition appartient à la prémisse d’une règle, de manière récursive. En effet, dans mon sujet une règle comporte une prémisse, qui est une liste chainée de proposition, et une conclusion. J'ai réussi à coder cette fonction mais pas de manière récursive... Si quelqu'un a une piste cela m'aiderai beaucoup!
Ma fonction est la suivante:

Proposition proposition_appartient_premisse (Regle r, Proposition proposition_test)
{
    Proposition proposition_trouve;
    proposition_trouve=NULL;
    Proposition temp_prop;
    temp_prop=r.premisse;
    if(r!=NULL)
    {
        temp_prop=r.premisse;
        if(proporsition_test!=NULL)
        {
            while(temp_prop!=NULL && proposition_trouve==NULL)
            {
                if (strcmp(temp_prop.description, proposition_test.description)==0 && 
                          temp_prop.valeur==proposition_test.valeur)
                {
                    printf("La proposition appartient à la premisse");
                    proposition_trouve=temp_prop;
                }
                else
                {
                    temp_prop=temp_prop->next;
                }
            }
            if (proposition_trouve==NULL)
            {
                printf("la proposition n'appartient pas à la premisse");
            }

        } 
    }
    return proposition_trouve;

}


Configuration: Windows / Chrome 87.0.4280.88

1 réponse

yg_be Messages postés 23363 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 2 décembre 2024 Ambassadeur 1 556
13 déc. 2020 à 16:03
bonjour,
as-tu une idée de comment tu pourrais appliquer la récursivité?
merci de tenir compte de ceci:https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
Proposition proposition_appartient_premisse (Regle r, Proposition proposition_test)
{
Proposition proposition_trouve;
proposition_trouve=NULL;
Proposition temp_prop;
temp_prop=r.premisse;
if(r!=NULL)
{
temp_prop=r.premisse;
if(proporsition_test!=NULL)
{
while(temp_prop!=NULL && proposition_trouve==NULL)
{
if (strcmp(temp_prop.description, proposition_test.description)==0 &&
temp_prop.valeur==proposition_test.valeur)
{
printf("La proposition appartient à la premisse");
proposition_trouve=temp_prop;
}
else
{
temp_prop=temp_prop->next;
}
}
if (proposition_trouve==NULL)
{
printf("la proposition n'appartient pas à la premisse");
}

}
}
return proposition_trouve;

}



J'espère que c'est mieux merci!


Je pensais ne pas faire un while et appeler la fonction à chaque fois mais ca ne me parait pas correct et limite inutile...
0
yg_be Messages postés 23363 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 2 décembre 2024 1 556 > agtnt
15 déc. 2020 à 15:15
ton programme est peu compréhensible, comme tu ne montres pas les définitions des types. il contient également des fautes. tes noms de variables n'aident pas à la compréhension.
ton texte est encore moins compréhensible: que veut dire: "une fonction qui si une proposition appartient à la prémisse d’une règle".

il est souvent préférable de réfléchir à la récursivité en analysant le problème, pas en analysant un programme non récursif. quel est le principe général de la récursivité?
0