Recursivité

Fermé
nadi_moni Messages postés 2 Date d'inscription mardi 25 décembre 2007 Statut Membre Dernière intervention 25 décembre 2007 - 25 déc. 2007 à 21:06
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 - 26 déc. 2007 à 00:11
salut je veux savoir la deference entre la recursivité terminal et non terminale et aussi je veux quelque exercice corigé

4 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
25 déc. 2007 à 21:25
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
nadi_moni Messages postés 2 Date d'inscription mardi 25 décembre 2007 Statut Membre Dernière intervention 25 décembre 2007
25 déc. 2007 à 21:38
est que la recurtion classique est la meme chose que la recursivité non terminal et encor jai pas bien saisi la deference
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
25 déc. 2007 à 21:39
Dans la récursion terminale il n'y a pas de remontée dans la pile des appels
0
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
26 déc. 2007 à 00:11
0