SlideShare une entreprise Scribd logo
1  sur  27
Présenter Par :
• M. Youssef Agnaou
• M, Youssef Tabiyi
• M, Khalid Ait Ali
• M Anass Dounoun
2023/2024
Ecole Normale Supérieure de l'Enseignement Technique
Département génie mécanique
Techniques de programmation en C
Présentation Sous-Titre :
Présentation sur les Fonctions Récursives en C
Génie Mécanique Des Systèmes Industriels
PLAN
PLAN
Introduction
Fondements des Fonctions Récursives
Syntaxe et Structure
Exemples Pratiques
Avantages et Limitations
Exercices et Défis
Conclusion
INTRODUCTION
INTRODUCTION
C’est quoi Les fonctions récursives?
Les fonctions récursives représentent une technique puissante et
fondamentale en programmation. Elles reposent sur le principe de la
résolution de problèmes en se divisant en des versions plus simples
d'eux-mêmes
Dans cette présentation, nous explorerons en profondeur le concept
des fonctions récursives en langage C, leur fonctionnement, leur
syntaxe, ainsi que leurs avantages et limites. De la compréhension des
bases de la récursivité à l'application pratique à travers des exemples
concrets, cette exploration vise à éclairer et à démystifier cet aspect
essentiel de la programmation.
5
Fondements des Fonctions
Récursives
Fondements
des
Fonctions
Récursives
C’est quoi Principes clés de la récursivité?
Les fonctions récursives sont basées sur le concept de récursivité, qui
consiste en la capacité d'une fonction à s'appeler elle-même de
manière répétée jusqu'à ce qu'une condition spécifique soit atteinte,
appelée le cas de base.
Cas de Base : Chaque fonction récursive doit avoir un cas de base.
C'est la condition qui arrête les appels récursifs et empêche la
récursion de continuer indéfiniment. Sans ce cas de base, la fonction
s'exécuterait à l'infini (boucle infinie).
7
Appel Récursif : Une fonction récursive fait appel à elle-même
avec des paramètres différents pour résoudre un problème plus petit
de la même nature. Cela permet de diviser le problème initial en sous-
problèmes jusqu'à atteindre le cas de base.
Fondements
des
Fonctions
Récursives
Voilà une Illustration simple?
8
Prenons l'exemple de la calculatrice factorielle. La factorielle d'un
nombre entier positif n, notée n!, est le produit de tous les entiers
positifs inférieurs ou égaux à n. Par exemple, 5!=5×4×3×2×1=120
Syntaxe et Structure des
Fonctions Récursives
Syntaxe
et
Structure
des
Fonctions
Récursives
C’est quoi Structure de base?
10
Cas de Base : Le cas de base est la condition qui, lorsqu'elle est atteinte, arrête les
appels récursifs. C'est une étape cruciale pour éviter une récursion infinie. Cette
condition est vérifiée en premier dans la fonction récursive.
Appel Récursif : Après avoir vérifié le cas de base, la fonction récursive s'appelle elle-
même avec des arguments différents. Cela divise le problème initial en un problème
plus petit et le rapproche du cas de base.
Syntaxe
et
Structure
des
Fonctions
Récursives
Comment Déroule la fonction récursive ?
11
1 : La fonction est appelée avec une valeur.
2 : Si la condition du cas de base est vérifiée, la fonction retourne une valeur
spécifiée,
3 : Si la condition du cas de base n'est pas vérifiée, la fonction s'appelle elle-même
avec des paramètres différents, se rapprochant ainsi du cas de base.
4 : Les appels récursifs continuent jusqu'à ce que le cas de base soit atteint, et les
valeurs sont renvoyées en remontant les appels.
Exemples Pratiques
Exemples
Pratiques
Comment Calcul de la Somme des Nombres de 1 à n?
13
• La fonction somme prend un entier n en entrée.
• Dans le cas où n est égal à 1, la fonction atteint le cas de base et retourne
simplement 1.
• Sinon, la fonction retourne la somme de n et de l'appel récursif somme(n - 1), ce
qui signifie qu'elle ajoute n au résultat de la somme des nombres de 1 à n-1.
Exemples
Pratiques
Déroulement de la fonction?
14
Si vous appelez cette fonction somme(5), voici comment cela se déroulerait :
• somme(5) appelle somme(4) puisque 5 n'est pas égal à 1.
• somme(4) appelle somme(3) puisque 4 n'est pas égal à 1.
• Ce processus continue jusqu'à ce que somme(1) soit appelée. À ce stade, le cas de
base est vérifié.
• La fonction somme(1) renvoie simplement 1, car le cas de base est atteint.
• En remontant les appels récursifs, les résultats sont additionnés : 1 + 2 + 3 + 4 +
5 = 15.
• Ainsi, somme(5) renvoie finalement 15.
Avantages et Limitations
Avantages
et
Limitations
Quelles sont LesAvantages ?
15
Clarté du Code : Les fonctions récursives permettent souvent d'écrire du code plus clair
et concis pour résoudre certains problèmes, en particulier ceux qui peuvent être
naturellement décomposés en sous-problèmes similaires.
Facilité pour les Structures de Données Récursives : Lors de la manipulation de structures
de données récursives la récursivité peut être un choix naturel et efficace pour la
manipulation de ces structures imbriquées.
Élégance Algorithmique : Dans certains cas, la récursivité peut offrir une solution
élégante et intuitive à des problèmes complexes. Elle correspond souvent de près à la
manière dont nous formulons certains problèmes dans notre esprit.
Avantages
et
Limitations
Quelles sont LesLimitations?
16
Utilisation de la Mémoire : Les fonctions récursives peuvent parfois consommer
davantage de mémoire en raison de l'accumulation des appels récursifs dans la pile
d'exécution.
Coût en Termes de Performances : Pour certains problèmes, la récursivité peut être
moins efficace en termes de performances par rapport à des approches itératives. Les
appels récursifs peuvent avoir un coût supplémentaire en temps d'exécution et
consommer plus de ressources processeur.
Complexité et Lisibilité : Dans certains cas, la récursivité peut rendre le code difficile à
comprendre, notamment pour les personnes peu familières avec les concepts de
récursion. De plus, une mauvaise gestion des cas de base peut conduire à des boucles
infinies.
Exercices et Défis
Exercices
et
Défis
Voilà des Exercices?
18
Exercice 1 : Calcul de la Puissance
Écrivez une fonction récursive puissance(x, n) qui prend deux entiers x et n en
paramètres et calcule x élevé à la puissance n.
Exercice 2 : Calcul de la Somme des Chiffres
Écrivez une fonction récursive sommeChiffres(n) qui prend un entier positif n en
paramètre et calcule la somme de ses chiffres.
Exercices
et
Défis
Voilà l’Exercice 1?
19
Exercices
et
Défis
Voilà l’Exercice 2?
20
Exercices
et
Défis
Voilà des Défis?
21
Calcul du N-ème Terme de la Suite de Fibonacci
Écrivez une fonction récursive Fibonacci qui prend un entier n en paramètre et
renvoie le n-ème terme de la suite de Fibonacci.
Si n est égal à 7, la fonction devrait renvoyer la valeur 13 car le septième terme de la
suite de Fibonacci est 13 (0, 1, 1, 2, 3, 5, 8, 13).
Exercices
et
Défis
Voilà La solution?
22
Conclusion
Correction Exercice 1 :
#include <stdio.h>
int puissance(int x, int n) {
if (n == 0) {
return 1; }
else {
return x * puissance(x, n - 1
}
}
int main() {
int base = 3;
int exposant = 4;
int resultat = puissance(base, exposant);
printf("%d ^ %d = %dn", base, exposant, resultat);
return 0;
}
Correction Exercice 2 :
#include <stdio.h>
int sommeChiffres(int n) {
if (n == 0) {
return 0; // }
else {
return (n % 10) + sommeChiffres(n / 10);
}
}
int main() {
int nombre = 12345;
int somme = sommeChiffres(nombre);
printf("La somme des chiffres de %d est : %dn", nombre, somme);
return 0;
}
Correction du Défis :
#include <stdio.h>
int fibonacci(int n) {
if (n <= 1) {
return n; // Cas de base : si n est 0 ou 1, retourne n
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
int main() {
int n;
printf("Enter un entier n");
scanf("%d", &n);
printf("Le terme %d de la sequence de Fibonacci est : %dn", n,
fibonacci(n));
return 0;
}

Contenu connexe

Similaire à Les fonction recursives en Programation C.pptx

Cours - TC - Histoire Algorithmique.pdf
Cours - TC - Histoire Algorithmique.pdfCours - TC - Histoire Algorithmique.pdf
Cours - TC - Histoire Algorithmique.pdfadeljaouadi
 
To_understand_transformers_together presentation
To_understand_transformers_together presentationTo_understand_transformers_together presentation
To_understand_transformers_together presentationbahija babzine
 
Introduction a la compilation Aperçu de la compilation / Assembleur MIPS - C1
Introduction a la compilation  Aperçu de la compilation / Assembleur MIPS - C1Introduction a la compilation  Aperçu de la compilation / Assembleur MIPS - C1
Introduction a la compilation Aperçu de la compilation / Assembleur MIPS - C1Beligh HAMDI
 
Les bases de la programmation en JAVA
Les bases de la programmation  en JAVA   Les bases de la programmation  en JAVA
Les bases de la programmation en JAVA Asmaa BENGUEDDACH
 
Exercices en langage c
Exercices en langage cExercices en langage c
Exercices en langage cDaoua Lotfi
 
chap 3 complexité (3).pdf
chap 3 complexité (3).pdfchap 3 complexité (3).pdf
chap 3 complexité (3).pdfdonixwm
 
1 analyse-et-mesure-des-performances
1 analyse-et-mesure-des-performances1 analyse-et-mesure-des-performances
1 analyse-et-mesure-des-performancesm.a bensaaoud
 
Programmation lineaire algorithme_du_simplexe
Programmation lineaire algorithme_du_simplexeProgrammation lineaire algorithme_du_simplexe
Programmation lineaire algorithme_du_simplexeJiijishady
 
la complexité des algorithmes en toute simplicité
la complexité des algorithmes en toute simplicitéla complexité des algorithmes en toute simplicité
la complexité des algorithmes en toute simplicitéSana REFAI
 
eExercices corrigesdivers
eExercices corrigesdiverseExercices corrigesdivers
eExercices corrigesdiversHajar Yazine
 
Exercicescorrigesdivers
ExercicescorrigesdiversExercicescorrigesdivers
ExercicescorrigesdiversKarim Amane
 

Similaire à Les fonction recursives en Programation C.pptx (20)

Python chapitre 4.pdf
Python chapitre 4.pdfPython chapitre 4.pdf
Python chapitre 4.pdf
 
Cours - TC - Histoire Algorithmique.pdf
Cours - TC - Histoire Algorithmique.pdfCours - TC - Histoire Algorithmique.pdf
Cours - TC - Histoire Algorithmique.pdf
 
Chapitre 04 : les fonctions
Chapitre 04 : les fonctionsChapitre 04 : les fonctions
Chapitre 04 : les fonctions
 
La programmation fonctionnelle en javascript / PF
La programmation fonctionnelle en javascript / PFLa programmation fonctionnelle en javascript / PF
La programmation fonctionnelle en javascript / PF
 
Formation VBA Excel
Formation VBA ExcelFormation VBA Excel
Formation VBA Excel
 
Oc1 2013
Oc1 2013Oc1 2013
Oc1 2013
 
To_understand_transformers_together presentation
To_understand_transformers_together presentationTo_understand_transformers_together presentation
To_understand_transformers_together presentation
 
Introduction a la compilation Aperçu de la compilation / Assembleur MIPS - C1
Introduction a la compilation  Aperçu de la compilation / Assembleur MIPS - C1Introduction a la compilation  Aperçu de la compilation / Assembleur MIPS - C1
Introduction a la compilation Aperçu de la compilation / Assembleur MIPS - C1
 
Les bases de la programmation en JAVA
Les bases de la programmation  en JAVA   Les bases de la programmation  en JAVA
Les bases de la programmation en JAVA
 
Asd
AsdAsd
Asd
 
Ktab asd
Ktab asdKtab asd
Ktab asd
 
Exercices en langage c
Exercices en langage cExercices en langage c
Exercices en langage c
 
chap 3 complexité (3).pdf
chap 3 complexité (3).pdfchap 3 complexité (3).pdf
chap 3 complexité (3).pdf
 
1 analyse-et-mesure-des-performances
1 analyse-et-mesure-des-performances1 analyse-et-mesure-des-performances
1 analyse-et-mesure-des-performances
 
0 c2 2013
0 c2 20130 c2 2013
0 c2 2013
 
Programmation lineaire algorithme_du_simplexe
Programmation lineaire algorithme_du_simplexeProgrammation lineaire algorithme_du_simplexe
Programmation lineaire algorithme_du_simplexe
 
Si
SiSi
Si
 
la complexité des algorithmes en toute simplicité
la complexité des algorithmes en toute simplicitéla complexité des algorithmes en toute simplicité
la complexité des algorithmes en toute simplicité
 
eExercices corrigesdivers
eExercices corrigesdiverseExercices corrigesdivers
eExercices corrigesdivers
 
Exercicescorrigesdivers
ExercicescorrigesdiversExercicescorrigesdivers
Exercicescorrigesdivers
 

Dernier

Algo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigésAlgo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigésSana REFAI
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestionyakinekaidouchi1
 
firefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirstjob4
 
optimisation logistique MLT_231102_155827.pdf
optimisation logistique  MLT_231102_155827.pdfoptimisation logistique  MLT_231102_155827.pdf
optimisation logistique MLT_231102_155827.pdfSoukainaMounawir
 
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Ville de Châteauguay
 
conception d'un batiment r+4 comparative de defferente ariante de plancher
conception d'un  batiment  r+4 comparative de defferente ariante de plancherconception d'un  batiment  r+4 comparative de defferente ariante de plancher
conception d'un batiment r+4 comparative de defferente ariante de planchermansouriahlam
 

Dernier (7)

Algo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigésAlgo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigés
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestion
 
firefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdf
 
JTC 2024 Bâtiment et Photovoltaïque.pdf
JTC 2024  Bâtiment et Photovoltaïque.pdfJTC 2024  Bâtiment et Photovoltaïque.pdf
JTC 2024 Bâtiment et Photovoltaïque.pdf
 
optimisation logistique MLT_231102_155827.pdf
optimisation logistique  MLT_231102_155827.pdfoptimisation logistique  MLT_231102_155827.pdf
optimisation logistique MLT_231102_155827.pdf
 
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
 
conception d'un batiment r+4 comparative de defferente ariante de plancher
conception d'un  batiment  r+4 comparative de defferente ariante de plancherconception d'un  batiment  r+4 comparative de defferente ariante de plancher
conception d'un batiment r+4 comparative de defferente ariante de plancher
 

Les fonction recursives en Programation C.pptx

  • 1. Présenter Par : • M. Youssef Agnaou • M, Youssef Tabiyi • M, Khalid Ait Ali • M Anass Dounoun 2023/2024 Ecole Normale Supérieure de l'Enseignement Technique Département génie mécanique Techniques de programmation en C Présentation Sous-Titre : Présentation sur les Fonctions Récursives en C Génie Mécanique Des Systèmes Industriels
  • 3. PLAN Introduction Fondements des Fonctions Récursives Syntaxe et Structure Exemples Pratiques Avantages et Limitations Exercices et Défis Conclusion
  • 5. INTRODUCTION C’est quoi Les fonctions récursives? Les fonctions récursives représentent une technique puissante et fondamentale en programmation. Elles reposent sur le principe de la résolution de problèmes en se divisant en des versions plus simples d'eux-mêmes Dans cette présentation, nous explorerons en profondeur le concept des fonctions récursives en langage C, leur fonctionnement, leur syntaxe, ainsi que leurs avantages et limites. De la compréhension des bases de la récursivité à l'application pratique à travers des exemples concrets, cette exploration vise à éclairer et à démystifier cet aspect essentiel de la programmation. 5
  • 7. Fondements des Fonctions Récursives C’est quoi Principes clés de la récursivité? Les fonctions récursives sont basées sur le concept de récursivité, qui consiste en la capacité d'une fonction à s'appeler elle-même de manière répétée jusqu'à ce qu'une condition spécifique soit atteinte, appelée le cas de base. Cas de Base : Chaque fonction récursive doit avoir un cas de base. C'est la condition qui arrête les appels récursifs et empêche la récursion de continuer indéfiniment. Sans ce cas de base, la fonction s'exécuterait à l'infini (boucle infinie). 7 Appel Récursif : Une fonction récursive fait appel à elle-même avec des paramètres différents pour résoudre un problème plus petit de la même nature. Cela permet de diviser le problème initial en sous- problèmes jusqu'à atteindre le cas de base.
  • 8. Fondements des Fonctions Récursives Voilà une Illustration simple? 8 Prenons l'exemple de la calculatrice factorielle. La factorielle d'un nombre entier positif n, notée n!, est le produit de tous les entiers positifs inférieurs ou égaux à n. Par exemple, 5!=5×4×3×2×1=120
  • 9. Syntaxe et Structure des Fonctions Récursives
  • 10. Syntaxe et Structure des Fonctions Récursives C’est quoi Structure de base? 10 Cas de Base : Le cas de base est la condition qui, lorsqu'elle est atteinte, arrête les appels récursifs. C'est une étape cruciale pour éviter une récursion infinie. Cette condition est vérifiée en premier dans la fonction récursive. Appel Récursif : Après avoir vérifié le cas de base, la fonction récursive s'appelle elle- même avec des arguments différents. Cela divise le problème initial en un problème plus petit et le rapproche du cas de base.
  • 11. Syntaxe et Structure des Fonctions Récursives Comment Déroule la fonction récursive ? 11 1 : La fonction est appelée avec une valeur. 2 : Si la condition du cas de base est vérifiée, la fonction retourne une valeur spécifiée, 3 : Si la condition du cas de base n'est pas vérifiée, la fonction s'appelle elle-même avec des paramètres différents, se rapprochant ainsi du cas de base. 4 : Les appels récursifs continuent jusqu'à ce que le cas de base soit atteint, et les valeurs sont renvoyées en remontant les appels.
  • 13. Exemples Pratiques Comment Calcul de la Somme des Nombres de 1 à n? 13 • La fonction somme prend un entier n en entrée. • Dans le cas où n est égal à 1, la fonction atteint le cas de base et retourne simplement 1. • Sinon, la fonction retourne la somme de n et de l'appel récursif somme(n - 1), ce qui signifie qu'elle ajoute n au résultat de la somme des nombres de 1 à n-1.
  • 14. Exemples Pratiques Déroulement de la fonction? 14 Si vous appelez cette fonction somme(5), voici comment cela se déroulerait : • somme(5) appelle somme(4) puisque 5 n'est pas égal à 1. • somme(4) appelle somme(3) puisque 4 n'est pas égal à 1. • Ce processus continue jusqu'à ce que somme(1) soit appelée. À ce stade, le cas de base est vérifié. • La fonction somme(1) renvoie simplement 1, car le cas de base est atteint. • En remontant les appels récursifs, les résultats sont additionnés : 1 + 2 + 3 + 4 + 5 = 15. • Ainsi, somme(5) renvoie finalement 15.
  • 16. Avantages et Limitations Quelles sont LesAvantages ? 15 Clarté du Code : Les fonctions récursives permettent souvent d'écrire du code plus clair et concis pour résoudre certains problèmes, en particulier ceux qui peuvent être naturellement décomposés en sous-problèmes similaires. Facilité pour les Structures de Données Récursives : Lors de la manipulation de structures de données récursives la récursivité peut être un choix naturel et efficace pour la manipulation de ces structures imbriquées. Élégance Algorithmique : Dans certains cas, la récursivité peut offrir une solution élégante et intuitive à des problèmes complexes. Elle correspond souvent de près à la manière dont nous formulons certains problèmes dans notre esprit.
  • 17. Avantages et Limitations Quelles sont LesLimitations? 16 Utilisation de la Mémoire : Les fonctions récursives peuvent parfois consommer davantage de mémoire en raison de l'accumulation des appels récursifs dans la pile d'exécution. Coût en Termes de Performances : Pour certains problèmes, la récursivité peut être moins efficace en termes de performances par rapport à des approches itératives. Les appels récursifs peuvent avoir un coût supplémentaire en temps d'exécution et consommer plus de ressources processeur. Complexité et Lisibilité : Dans certains cas, la récursivité peut rendre le code difficile à comprendre, notamment pour les personnes peu familières avec les concepts de récursion. De plus, une mauvaise gestion des cas de base peut conduire à des boucles infinies.
  • 19. Exercices et Défis Voilà des Exercices? 18 Exercice 1 : Calcul de la Puissance Écrivez une fonction récursive puissance(x, n) qui prend deux entiers x et n en paramètres et calcule x élevé à la puissance n. Exercice 2 : Calcul de la Somme des Chiffres Écrivez une fonction récursive sommeChiffres(n) qui prend un entier positif n en paramètre et calcule la somme de ses chiffres.
  • 22. Exercices et Défis Voilà des Défis? 21 Calcul du N-ème Terme de la Suite de Fibonacci Écrivez une fonction récursive Fibonacci qui prend un entier n en paramètre et renvoie le n-ème terme de la suite de Fibonacci. Si n est égal à 7, la fonction devrait renvoyer la valeur 13 car le septième terme de la suite de Fibonacci est 13 (0, 1, 1, 2, 3, 5, 8, 13).
  • 25.
  • 26. Correction Exercice 1 : #include <stdio.h> int puissance(int x, int n) { if (n == 0) { return 1; } else { return x * puissance(x, n - 1 } } int main() { int base = 3; int exposant = 4; int resultat = puissance(base, exposant); printf("%d ^ %d = %dn", base, exposant, resultat); return 0; } Correction Exercice 2 : #include <stdio.h> int sommeChiffres(int n) { if (n == 0) { return 0; // } else { return (n % 10) + sommeChiffres(n / 10); } } int main() { int nombre = 12345; int somme = sommeChiffres(nombre); printf("La somme des chiffres de %d est : %dn", nombre, somme); return 0; }
  • 27. Correction du Défis : #include <stdio.h> int fibonacci(int n) { if (n <= 1) { return n; // Cas de base : si n est 0 ou 1, retourne n } else { return fibonacci(n - 1) + fibonacci(n - 2); } } int main() { int n; printf("Enter un entier n"); scanf("%d", &n); printf("Le terme %d de la sequence de Fibonacci est : %dn", n, fibonacci(n)); return 0; }