Transformer de manière récursive

agtnt -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
    1. agtnt
       
      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
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > agtnt
         
        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