Recursivité

nadi_moni Messages postés 2 Statut Membre -  
ekra Messages postés 1873 Statut Membre -
salut je veux savoir la deference entre la recursivité terminal et non terminale et aussi je veux quelque exercice corigé

4 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    voici un exemple

    récursion classique
    #include <stdio.h>
    
    unsigned int factoriel (unsigned int);
    
    int main ()
    {
      int nb;
      printf ("Entrez un numéro entier : ");
      scanf ("%u", &nb);
      printf ("%u! = %u\n", nb, factoriel (nb));
      return 0;
    }
    
    unsigned int factoriel (unsigned nb){
      if (nb < 2)
        return 1;
      else
        return nb * factoriel (nb - 1);
    }
    
    récursion terminale
    #include <stdio.h>
    
    unsigned int factoriel (unsigned int, unsigned int);
    
    int main ()
    {
      int nb;
      printf ("Entrez un numéro entier : ");
      scanf ("%u", &nb);
      printf ("%u! = %u\n", nb, factoriel (nb,1));
      return 0;
    }
    
    unsigned int factoriel (unsigned nb, unsigned n){
      if (nb == 0)
        return 1;
      else if (nb == 1)
        return n;
      else
        return factoriel(nb - 1, nb * n);
    }
    


    0
  2. nadi_moni Messages postés 2 Statut Membre
     
    est que la recurtion classique est la meme chose que la recursivité non terminal et encor jai pas bien saisi la deference
    0
  3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Dans la récursion terminale il n'y a pas de remontée dans la pile des appels
    0