Télécharger la présentation
1
La récursivité
2
Une récursivité: 3 points à concevoir!
1. Expression récursive du problème (récursion): L’ « équation » de la récursivité. Diviser pour régner n! = n x (n-1) x (n-2) x (n-3) x … x 1 = n x (n-1)! 2. Condition d’arrêt : Quand est-ce qu’on arrête les appels récursifs? 1! ou 0! 3. Convergence (vers la condition d’arrêt): Des conditions qui nous assure qu’un jour on va atteindre les conditions d’arrêt. si n = 0 ou n = 1 alors on a les conditions d’arrêt si n 2 alors la soustraction par 1 nous amènera vers n = 1 (n n-1 n-2 n-3 … 2 1) donc convergence si n 0
3
Récursivité : Diviser pour régner
Structure générale d’une fonction récursive : { if(/* !condition de convergence */) exit(1); if(/*condition d’arrêt*/) return(/*Ce qu’elle doit retourné*/); else appel récursif } Traitement
4
Exemple: La factorielle (n!)
long factorielle(int n) { if (n < 0)/* hypothèse de convergence : n 0 */ exit(1); if (n == 0 || n == 1) return 1; /* condition d’arrêt */ else /* appel récursif */ return n * factorielle(n - 1); }
5
Rappel sur la récursivité
Voir les nombreux exercices corrigés, semaine4.
6
Récursivité et piles On peut simuler la pile d’exécution dans le cas d’une fonction récursive. On peut alors transformer une fonction récursive en fonction itérative avec gestion explicite d’une pile. Page 185 des notes de cours «Recette» pour traduire une fonction récursive en une fonction non-récursive (simuler la récursivité). Exemple (factoriel): semainier, semaine 4 (cet exemple fait partie du zip qui contient ces acétates). Exercice (tours de Hanoï): semainier, semaine 4. Voir le corrigé présent dans le zip!
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.