TITM4v3rick
1337
Il s'agit d'une procédure, fonction, méthode de classe dont l'exécution entraîne un ou plusieurs appels à elle-même.
Ben c'est comme qui dirait une fonction qui s'appelle elle-même soit d'une façon directe, soit d'une façon indirecte...
un exemple français de récursivité (tautologie)
ordre = arrangement
Arrangement = action d'arranger
arranger = mettre en ordre
Bon, en français on tourne en rond à moins que l'étudiant connaisse un vocabulaire plus étandu, en programmation, on tourne aussi en rond jusqu'à ce qu'une condition soit vérifiée (une close d'évaluation immédiate = sans besoin de réfléchir...)
Exemple pratique : [C++]
Le calcul d'une factorielle (std)
La factorielle d'un nombre (exemple)
Facto de 6 = 6 x 5 x 4 x 3 x 2 x 1 (= 720)
Facto de n = n x n-1 x ...
(-1 quand l'utilisateur est trop con pour savoir qu'une facto d'un nombre négatif c'est un peu dur à calculer...)
Façon récursive :
Bon qui pourrait donner un autre exemple intéressant ?
Ne donnez pas un Fibonacci (c'est un mauvais exemple d'application de la récursivité)
Les tours de Hanoï c'est pas mal...
Une recherche d'une valeur dans un tableau ?
Un exemple plus complexe genre Backtracking (pour un labyrinthe par exemple) ?
Autre ?
Ben c'est comme qui dirait une fonction qui s'appelle elle-même soit d'une façon directe, soit d'une façon indirecte...
un exemple français de récursivité (tautologie)
ordre = arrangement
Arrangement = action d'arranger
arranger = mettre en ordre
Bon, en français on tourne en rond à moins que l'étudiant connaisse un vocabulaire plus étandu, en programmation, on tourne aussi en rond jusqu'à ce qu'une condition soit vérifiée (une close d'évaluation immédiate = sans besoin de réfléchir...)
Exemple pratique : [C++]
Le calcul d'une factorielle (std)
La factorielle d'un nombre (exemple)
Facto de 6 = 6 x 5 x 4 x 3 x 2 x 1 (= 720)
Facto de n = n x n-1 x ...
Code:
long facto(long nbr)
{
if (nbr >= 0)
{
if ((nbr == 0) || (nbr ==1))
return 1;
else
{
for (long i=(nbr-1) ; i>0 ; i--)
nbr = nbr * i;
return nbr;
}
}
else
return -1;
}
Façon récursive :
Code:
long Facto(long n)
{
if (n >= 0)
{
if ((n == 0) || (n == 1))
return 1;
else
return n * Facto(n-1);
}
else
return -1;
}
Bon qui pourrait donner un autre exemple intéressant ?
Ne donnez pas un Fibonacci (c'est un mauvais exemple d'application de la récursivité)
Les tours de Hanoï c'est pas mal...
Une recherche d'une valeur dans un tableau ?
Un exemple plus complexe genre Backtracking (pour un labyrinthe par exemple) ?
Autre ?