[ALGO] Récursivité terminale...
Fermé
nicotendo
Messages postés
195
Date d'inscription
mercredi 3 mai 2006
Statut
Membre
Dernière intervention
31 juillet 2012
-
12 déc. 2007 à 19:21
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 - 12 déc. 2007 à 21:16
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 - 12 déc. 2007 à 21:16
A voir également:
- Récursivité non terminale
- Toutes les formules mathématiques terminale pdf - Télécharger - Études & Formations
- Dictée terminale - Guide
- Bulletin terminale perdu ✓ - Forum Études / Formation High-Tech
- Récupérer bulletins scolaires - Forum Vos droits sur internet
- Discord en attente du terminale ✓ - Forum MacOS
1 réponse
ekra
Messages postés
1870
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
24 juillet 2014
342
12 déc. 2007 à 21:16
12 déc. 2007 à 21:16
Bonjour,
Une fonction récursive terminale n'effectue pas d'autre opération qu'un dépilement après l'apelle récursif ou le test d'arret de la récursivité. Une fonction récursive non terminale fabrique son résultat au dépilement des fonctions.
Lors d'une récursivité terminale, il est inutile de sauver le contexte de la fonction. Si le compilateur peut optimiser, on gagne en espace mémoire et en temps d'execution.
Exemple :
(Language C)
Factorielle non terminale :
Factorielle terminale
Une fonction récursive terminale n'effectue pas d'autre opération qu'un dépilement après l'apelle récursif ou le test d'arret de la récursivité. Une fonction récursive non terminale fabrique son résultat au dépilement des fonctions.
Lors d'une récursivité terminale, il est inutile de sauver le contexte de la fonction. Si le compilateur peut optimiser, on gagne en espace mémoire et en temps d'execution.
Exemple :
(Language C)
Factorielle non terminale :
int factorielle(int n) { if (n <= 1) { return 1; } return n * factorielle(n - 1); }
Factorielle terminale
#define factorielle(n) (factorielle(n , 1)) int factorielle(int n, int resultat) { if (n <= 1) { return resultat; } return factorielle(n-1, n * resultat); }