Recursivité

salut je veux savoir la deference entre la recursivité terminal et non terminale et aussi je veux quelque exercice corigé

4 réponses

  1. Modérateur
    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
    1. est que la recurtion classique est la meme chose que la recursivité non terminal et encor jai pas bien saisi la deference
      0
      1. Modérateur
        Dans la récursion terminale il n'y a pas de remontée dans la pile des appels
        0