SlideShare uma empresa Scribd logo
1 de 18
NB : Téléchargez la présentation pour voir l’animation
 Ecrire une fonction récursive en C qui
permet de convertir un entier en binaire
 L’astuce est la suivante : Soit 42 est l’entier à
convertir, sa conversion binaire est 101010
 Soit:
42 2
210 2
1 10
0
2
5
1
2
2 2
21
0
1 0
Le résultat de 42 est 101010 (lecture
inverse des restes)
1 – La première étape pour établir une
forme récursive est de chercher une
condition d’arrêt : Quand dois-je
m’arrêter? Sinon l’appel récursif sera
infini ou finira avec une erreur!
 Dans ce cas, la condition d’arrêt est lorsque
je trouve un « 0 » comme quotient
42 2
210 2
1 10
0
2
5
1
2
2 2
21
0
1 0
 Ainsi la première forme de notre fonction
récursive est la suivante
int Binaire (int nbre_a_convertir){
if(nbre_a_convertir / 2 == 0)
return nbre_a_convertir % 2;
}
 La question qui se pose maintenant est :
comment atteindre cette condition d’arrêt?
 Il faut trouver un lien entre le nombre à
entrer au départ et la condition d’arrêt.
 Dresser l’arbre de dépendance entre les
appels récursifs
Binaire(42)
Binaire(21)
Binaire(10)
Binaire(5)
Binaire(2)
Binaire(1)
 Dresser l’arbre de dépendance entre les
appels récursifs
Binaire(42)
Binaire(21)
Binaire(10)
Binaire(5)
Binaire(2)
Binaire(1) Retourne 1 : le reste
Fait appel à Binaire(1)
Fait appel à Binaire(2)
Fait appel à Binaire(5)
Fait appel à Binaire(10)
Fait appel à Binaire(21)
Pour passer de
42 à 21 il faut
prendre le
quotient de 42/2
La même chose pour les
autres : pour passer d’un appel
à un autre il faut passer le
quotient du nombre courant
 Ca veut dire
Binaire(42)
Binaire(21)
Binaire(10)
Binaire(5)
Binaire(2)
Binaire(1) Retourne 1 : le reste
Fait appel à Binaire(2 DIV 2)
Fait appel à Binaire(5 DIV 2)
Fait appel à Binaire(10 DIV 2)
Fait appel à Binaire(21 DIV 2)
Fait appel à Binaire(42 DIV 2)
 Ainsi la nouvelle forme de la méthode
récursive est
int Binaire (int nbre_a_convertir){
if(nbre_a_convertir / 2 == 0)
return nbre_a_convertir % 2;
else
return Binaire(nbre_a_convertir/2);
}
 Testez votre méthode : le résultat de 42 sera
1 .. Où sont passés les autres chiffres?
 Tel qu’on a écrit la méthode, nous ne
sommes pas entrain de sauvegarder les
résultats des états intermédiaires avant
d’atteindre la condition d’arrêt
 Pour ne pas les perdre, on suggère de
multiplier par 10 l’appel récursif
 Pourquoi?
› On remarque que le premier nombre à être
retourné est celui de la condition d’arrêt et c’est
bien le premier nombre à gauche du résultat soit
101010
› Voyons comment le résultat se forme
 Dresser l’arbre de dépendance entre les
appels récursifs
Binaire(42)
Binaire(21)
Binaire(10)
Binaire(5)
Binaire(2)
Binaire(1) Retourne 1 : le reste
Fait appel à Binaire(1)*10 et retourne 1*10=10
Fait appel à Binaire(2)*10 et retourne 10*10=100
Fait appel à Binaire(5)*10 et retourne
100*10=1000
Fait appel à Binaire(10)*10 et
retourne 1000*10=10000
Fait appel à Binaire(21)*10 et
retourne 10000*10=10000
 Chouette ! On a pu décaler le 1 à gauche
mais le résultat est à côté de la plaque …
 Que faire?
› Ici il faut remarquer une nouvelle caractéristique
(pour la découvrir il faut tester sur votre brouillon
la conversion de plusieurs nombres pour pouvoir
la détecter)
 Remarquez le lien entre 4DIV2=2 et 4
› 10 et 100 (10*10=100)
 Remarquez le lien entre 8DIV2=4 et 8
› 100 et 1000 (100*10=1000)
 Remarquez le lien entre 16DIV2=8 et 16
› 1000 et 10000 (1000*10=10000)
› On peut dire que si j’ai le nombre binaire d’un
nombre entier pair alors il suffit de le multiplier par 10
pour trouver le nombre binaire de son double
 Remarquez le lien entre 5DIV2=2 et 5
› 10 et 101 (10*10 +1 =101)
 Remarquez le lien entre 7DIV2=3 et 7
› 11 et 111 (11*10+1=111)
 Remarquez le lien entre 9DIV2=4 et 9
› 100 et 1001 (100*10+1=1001)
› On peut dire que si j’ai le nombre binaire d’un
nombre entier impair, il faut prendre le nombre
binaire du quotient de sa division par 2 le multiplier
par 10 et le rajouter 1
 La forme finale de notre méthode est :
int Binaire (int nbre_a_convertir){
if(nbre_a_convertir / 2 == 0)
return nbre_a_convertir % 2;
else if (n % 2 == 0) // n est pair
return Binaire(nbre_a_convertir/2)*10;
else
return Binaire(nbre_a_convertir/2)*10+1;
}
else
return Binaire(nbre_a_convertir/2);
}
 Übung macht den Meister !
› En s’exerçant on devient « maître »
› Pour comprendre la récursivité, défiez-vous avec
plusieurs exercices
› Bon courage!

Mais conteúdo relacionado

Semelhante a Comment retrouver la forme récursive

Chapitre-2_SYSTEMES DE NUMERATION ET CODAGE.pdf
Chapitre-2_SYSTEMES DE NUMERATION ET CODAGE.pdfChapitre-2_SYSTEMES DE NUMERATION ET CODAGE.pdf
Chapitre-2_SYSTEMES DE NUMERATION ET CODAGE.pdfRazaneLAMARA
 
Projet d'Analyse Numérique
Projet d'Analyse NumériqueProjet d'Analyse Numérique
Projet d'Analyse NumériqueYassineElaroui2
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesECAM Brussels Engineering School
 
INF120 - Algo DUT SRC1 - Cours 2 (2012)
INF120 - Algo DUT SRC1 - Cours 2 (2012)INF120 - Algo DUT SRC1 - Cours 2 (2012)
INF120 - Algo DUT SRC1 - Cours 2 (2012)PGambette
 

Semelhante a Comment retrouver la forme récursive (8)

Chapitre-2_SYSTEMES DE NUMERATION ET CODAGE.pdf
Chapitre-2_SYSTEMES DE NUMERATION ET CODAGE.pdfChapitre-2_SYSTEMES DE NUMERATION ET CODAGE.pdf
Chapitre-2_SYSTEMES DE NUMERATION ET CODAGE.pdf
 
CODAGE.pptx
CODAGE.pptxCODAGE.pptx
CODAGE.pptx
 
Projet d'Analyse Numérique
Projet d'Analyse NumériqueProjet d'Analyse Numérique
Projet d'Analyse Numérique
 
02 correction-td smi-s3-algo2
02 correction-td smi-s3-algo202 correction-td smi-s3-algo2
02 correction-td smi-s3-algo2
 
Récursivité
RécursivitéRécursivité
Récursivité
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de données
 
INF120 - Algo DUT SRC1 - Cours 2 (2012)
INF120 - Algo DUT SRC1 - Cours 2 (2012)INF120 - Algo DUT SRC1 - Cours 2 (2012)
INF120 - Algo DUT SRC1 - Cours 2 (2012)
 
Doc
DocDoc
Doc
 

Mais de Mariem ZAOUALI

Chap5 La manipulation des iterables en python
Chap5 La manipulation des iterables en pythonChap5 La manipulation des iterables en python
Chap5 La manipulation des iterables en pythonMariem ZAOUALI
 
Chap6 Manipulation des fichiers
Chap6 Manipulation des fichiers Chap6 Manipulation des fichiers
Chap6 Manipulation des fichiers Mariem ZAOUALI
 
Chap7 simulation numérique
Chap7 simulation numériqueChap7 simulation numérique
Chap7 simulation numériqueMariem ZAOUALI
 
Chap4 Récursivité en python
Chap4 Récursivité en pythonChap4 Récursivité en python
Chap4 Récursivité en pythonMariem ZAOUALI
 
Chap3 programmation modulaire en python
Chap3 programmation modulaire en pythonChap3 programmation modulaire en python
Chap3 programmation modulaire en pythonMariem ZAOUALI
 
Chap2 Les conteneurs en python
Chap2 Les conteneurs en pythonChap2 Les conteneurs en python
Chap2 Les conteneurs en pythonMariem ZAOUALI
 
Chap1 Introduction à python
Chap1 Introduction à pythonChap1 Introduction à python
Chap1 Introduction à pythonMariem ZAOUALI
 
Tp1 design patternappliques
Tp1 design patternappliquesTp1 design patternappliques
Tp1 design patternappliquesMariem ZAOUALI
 
Cours 4 intergiciels orientes messages jms
Cours 4 intergiciels orientes messages  jmsCours 4 intergiciels orientes messages  jms
Cours 4 intergiciels orientes messages jmsMariem ZAOUALI
 
Cours 2 les architectures reparties
Cours 2 les architectures repartiesCours 2 les architectures reparties
Cours 2 les architectures repartiesMariem ZAOUALI
 
Cours 3 les objets distants rmi corba
Cours 3 les objets distants rmi corbaCours 3 les objets distants rmi corba
Cours 3 les objets distants rmi corbaMariem ZAOUALI
 
Cours 1 les principes de base
Cours 1 les principes de baseCours 1 les principes de base
Cours 1 les principes de baseMariem ZAOUALI
 
TP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec MatlabTP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec MatlabMariem ZAOUALI
 
Correction TP4 Atelier C++ /GL2 INSAT / Tunisie
Correction TP4 Atelier C++ /GL2 INSAT / TunisieCorrection TP4 Atelier C++ /GL2 INSAT / Tunisie
Correction TP4 Atelier C++ /GL2 INSAT / TunisieMariem ZAOUALI
 
TP4 Atelier C++ /GL2 INSAT / Tunisie
TP4 Atelier C++ /GL2 INSAT / TunisieTP4 Atelier C++ /GL2 INSAT / Tunisie
TP4 Atelier C++ /GL2 INSAT / TunisieMariem ZAOUALI
 
TP3 Atelier C++/ GL2 INSAT / Tunisie
TP3 Atelier C++/ GL2 INSAT / TunisieTP3 Atelier C++/ GL2 INSAT / Tunisie
TP3 Atelier C++/ GL2 INSAT / TunisieMariem ZAOUALI
 
TP2 Atelier C++/ GL2 INSAT / Tunisie
TP2 Atelier C++/ GL2 INSAT / TunisieTP2 Atelier C++/ GL2 INSAT / Tunisie
TP2 Atelier C++/ GL2 INSAT / TunisieMariem ZAOUALI
 
TP1 Atelier C++/ GL2 INSAT / Tunisie
TP1 Atelier C++/ GL2 INSAT / TunisieTP1 Atelier C++/ GL2 INSAT / Tunisie
TP1 Atelier C++/ GL2 INSAT / TunisieMariem ZAOUALI
 
Graduation Project Presentation _ INSAT Tunisia
Graduation Project Presentation _ INSAT Tunisia Graduation Project Presentation _ INSAT Tunisia
Graduation Project Presentation _ INSAT Tunisia Mariem ZAOUALI
 

Mais de Mariem ZAOUALI (20)

Chap5 La manipulation des iterables en python
Chap5 La manipulation des iterables en pythonChap5 La manipulation des iterables en python
Chap5 La manipulation des iterables en python
 
Chap6 Manipulation des fichiers
Chap6 Manipulation des fichiers Chap6 Manipulation des fichiers
Chap6 Manipulation des fichiers
 
Chap7 simulation numérique
Chap7 simulation numériqueChap7 simulation numérique
Chap7 simulation numérique
 
Chap4 Récursivité en python
Chap4 Récursivité en pythonChap4 Récursivité en python
Chap4 Récursivité en python
 
Chap3 programmation modulaire en python
Chap3 programmation modulaire en pythonChap3 programmation modulaire en python
Chap3 programmation modulaire en python
 
Chap2 Les conteneurs en python
Chap2 Les conteneurs en pythonChap2 Les conteneurs en python
Chap2 Les conteneurs en python
 
Chap1 Introduction à python
Chap1 Introduction à pythonChap1 Introduction à python
Chap1 Introduction à python
 
Tp1 design patternappliques
Tp1 design patternappliquesTp1 design patternappliques
Tp1 design patternappliques
 
TP2 RMI
TP2 RMITP2 RMI
TP2 RMI
 
Cours 4 intergiciels orientes messages jms
Cours 4 intergiciels orientes messages  jmsCours 4 intergiciels orientes messages  jms
Cours 4 intergiciels orientes messages jms
 
Cours 2 les architectures reparties
Cours 2 les architectures repartiesCours 2 les architectures reparties
Cours 2 les architectures reparties
 
Cours 3 les objets distants rmi corba
Cours 3 les objets distants rmi corbaCours 3 les objets distants rmi corba
Cours 3 les objets distants rmi corba
 
Cours 1 les principes de base
Cours 1 les principes de baseCours 1 les principes de base
Cours 1 les principes de base
 
TP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec MatlabTP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec Matlab
 
Correction TP4 Atelier C++ /GL2 INSAT / Tunisie
Correction TP4 Atelier C++ /GL2 INSAT / TunisieCorrection TP4 Atelier C++ /GL2 INSAT / Tunisie
Correction TP4 Atelier C++ /GL2 INSAT / Tunisie
 
TP4 Atelier C++ /GL2 INSAT / Tunisie
TP4 Atelier C++ /GL2 INSAT / TunisieTP4 Atelier C++ /GL2 INSAT / Tunisie
TP4 Atelier C++ /GL2 INSAT / Tunisie
 
TP3 Atelier C++/ GL2 INSAT / Tunisie
TP3 Atelier C++/ GL2 INSAT / TunisieTP3 Atelier C++/ GL2 INSAT / Tunisie
TP3 Atelier C++/ GL2 INSAT / Tunisie
 
TP2 Atelier C++/ GL2 INSAT / Tunisie
TP2 Atelier C++/ GL2 INSAT / TunisieTP2 Atelier C++/ GL2 INSAT / Tunisie
TP2 Atelier C++/ GL2 INSAT / Tunisie
 
TP1 Atelier C++/ GL2 INSAT / Tunisie
TP1 Atelier C++/ GL2 INSAT / TunisieTP1 Atelier C++/ GL2 INSAT / Tunisie
TP1 Atelier C++/ GL2 INSAT / Tunisie
 
Graduation Project Presentation _ INSAT Tunisia
Graduation Project Presentation _ INSAT Tunisia Graduation Project Presentation _ INSAT Tunisia
Graduation Project Presentation _ INSAT Tunisia
 

Último

BOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleur
BOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleurBOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleur
BOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleuridelewebmestre
 
BOW 2024 - Dedans/Dehors quand voir ne suffit pas
BOW 2024 - Dedans/Dehors quand voir ne suffit pasBOW 2024 - Dedans/Dehors quand voir ne suffit pas
BOW 2024 - Dedans/Dehors quand voir ne suffit pasidelewebmestre
 
BOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitières
BOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitièresBOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitières
BOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitièresidelewebmestre
 
BOW 2024 -3-9 - Matelas de logettes à eau refroidie VL
BOW 2024 -3-9 - Matelas de logettes à eau refroidie VLBOW 2024 -3-9 - Matelas de logettes à eau refroidie VL
BOW 2024 -3-9 - Matelas de logettes à eau refroidie VLidelewebmestre
 
Cours polymère presentation powerpoint 46 pages
Cours polymère presentation powerpoint 46 pagesCours polymère presentation powerpoint 46 pages
Cours polymère presentation powerpoint 46 pagesPierreFournier32
 
Accompagnement de l'agrivoltaisme - Focus sur l'étude système en Merthe et Mo...
Accompagnement de l'agrivoltaisme - Focus sur l'étude système en Merthe et Mo...Accompagnement de l'agrivoltaisme - Focus sur l'étude système en Merthe et Mo...
Accompagnement de l'agrivoltaisme - Focus sur l'étude système en Merthe et Mo...idelewebmestre
 
Cadre réglementaire et développement de l'agrivoltaïsme en France
Cadre réglementaire et développement de l'agrivoltaïsme en FranceCadre réglementaire et développement de l'agrivoltaïsme en France
Cadre réglementaire et développement de l'agrivoltaïsme en Franceidelewebmestre
 
BOW 2024 - Logement des veaux laitiers en plein air
BOW 2024 - Logement des veaux laitiers en plein airBOW 2024 - Logement des veaux laitiers en plein air
BOW 2024 - Logement des veaux laitiers en plein airidelewebmestre
 
BOW 2024 - Jardins d'hiver en poulets de chair
BOW 2024 - Jardins d'hiver en poulets de chairBOW 2024 - Jardins d'hiver en poulets de chair
BOW 2024 - Jardins d'hiver en poulets de chairidelewebmestre
 
BOW 2024 - Nouveaux modes de logement pour des veaux de boucherie avec accès ...
BOW 2024 - Nouveaux modes de logement pour des veaux de boucherie avec accès ...BOW 2024 - Nouveaux modes de logement pour des veaux de boucherie avec accès ...
BOW 2024 - Nouveaux modes de logement pour des veaux de boucherie avec accès ...idelewebmestre
 
BOW 2024 - 3-3 - Adaptation des bâtiments pour ruminants au changement clima...
BOW 2024 - 3-3 -  Adaptation des bâtiments pour ruminants au changement clima...BOW 2024 - 3-3 -  Adaptation des bâtiments pour ruminants au changement clima...
BOW 2024 - 3-3 - Adaptation des bâtiments pour ruminants au changement clima...idelewebmestre
 
BOW 2024 - Le bâtiment multicritère porcin
BOW 2024 - Le bâtiment multicritère porcinBOW 2024 - Le bâtiment multicritère porcin
BOW 2024 - Le bâtiment multicritère porcinidelewebmestre
 
BOW 2024 - 3-6 - Adaptation climat chaud Porcs
BOW 2024 - 3-6 - Adaptation climat chaud PorcsBOW 2024 - 3-6 - Adaptation climat chaud Porcs
BOW 2024 - 3-6 - Adaptation climat chaud Porcsidelewebmestre
 
Agrivoltaïsme et filière ovine en Dordogne
Agrivoltaïsme et filière ovine en DordogneAgrivoltaïsme et filière ovine en Dordogne
Agrivoltaïsme et filière ovine en Dordogneidelewebmestre
 
BOW 2024-3-10 - Batcool Petits ruminants
BOW 2024-3-10 - Batcool Petits ruminantsBOW 2024-3-10 - Batcool Petits ruminants
BOW 2024-3-10 - Batcool Petits ruminantsidelewebmestre
 
BOW 2024 - L'enrichissement du milieu des chèvres laitières
BOW 2024 - L'enrichissement du milieu des chèvres laitièresBOW 2024 - L'enrichissement du milieu des chèvres laitières
BOW 2024 - L'enrichissement du milieu des chèvres laitièresidelewebmestre
 
Bow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminants
Bow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminantsBow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminants
Bow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminantsidelewebmestre
 
BOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcins
BOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcinsBOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcins
BOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcinsidelewebmestre
 
BOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équine
BOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équineBOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équine
BOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équineidelewebmestre
 

Último (20)

BOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleur
BOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleurBOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleur
BOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleur
 
Webinaire lésions podales_04.04.2024.pptx
Webinaire lésions podales_04.04.2024.pptxWebinaire lésions podales_04.04.2024.pptx
Webinaire lésions podales_04.04.2024.pptx
 
BOW 2024 - Dedans/Dehors quand voir ne suffit pas
BOW 2024 - Dedans/Dehors quand voir ne suffit pasBOW 2024 - Dedans/Dehors quand voir ne suffit pas
BOW 2024 - Dedans/Dehors quand voir ne suffit pas
 
BOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitières
BOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitièresBOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitières
BOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitières
 
BOW 2024 -3-9 - Matelas de logettes à eau refroidie VL
BOW 2024 -3-9 - Matelas de logettes à eau refroidie VLBOW 2024 -3-9 - Matelas de logettes à eau refroidie VL
BOW 2024 -3-9 - Matelas de logettes à eau refroidie VL
 
Cours polymère presentation powerpoint 46 pages
Cours polymère presentation powerpoint 46 pagesCours polymère presentation powerpoint 46 pages
Cours polymère presentation powerpoint 46 pages
 
Accompagnement de l'agrivoltaisme - Focus sur l'étude système en Merthe et Mo...
Accompagnement de l'agrivoltaisme - Focus sur l'étude système en Merthe et Mo...Accompagnement de l'agrivoltaisme - Focus sur l'étude système en Merthe et Mo...
Accompagnement de l'agrivoltaisme - Focus sur l'étude système en Merthe et Mo...
 
Cadre réglementaire et développement de l'agrivoltaïsme en France
Cadre réglementaire et développement de l'agrivoltaïsme en FranceCadre réglementaire et développement de l'agrivoltaïsme en France
Cadre réglementaire et développement de l'agrivoltaïsme en France
 
BOW 2024 - Logement des veaux laitiers en plein air
BOW 2024 - Logement des veaux laitiers en plein airBOW 2024 - Logement des veaux laitiers en plein air
BOW 2024 - Logement des veaux laitiers en plein air
 
BOW 2024 - Jardins d'hiver en poulets de chair
BOW 2024 - Jardins d'hiver en poulets de chairBOW 2024 - Jardins d'hiver en poulets de chair
BOW 2024 - Jardins d'hiver en poulets de chair
 
BOW 2024 - Nouveaux modes de logement pour des veaux de boucherie avec accès ...
BOW 2024 - Nouveaux modes de logement pour des veaux de boucherie avec accès ...BOW 2024 - Nouveaux modes de logement pour des veaux de boucherie avec accès ...
BOW 2024 - Nouveaux modes de logement pour des veaux de boucherie avec accès ...
 
BOW 2024 - 3-3 - Adaptation des bâtiments pour ruminants au changement clima...
BOW 2024 - 3-3 -  Adaptation des bâtiments pour ruminants au changement clima...BOW 2024 - 3-3 -  Adaptation des bâtiments pour ruminants au changement clima...
BOW 2024 - 3-3 - Adaptation des bâtiments pour ruminants au changement clima...
 
BOW 2024 - Le bâtiment multicritère porcin
BOW 2024 - Le bâtiment multicritère porcinBOW 2024 - Le bâtiment multicritère porcin
BOW 2024 - Le bâtiment multicritère porcin
 
BOW 2024 - 3-6 - Adaptation climat chaud Porcs
BOW 2024 - 3-6 - Adaptation climat chaud PorcsBOW 2024 - 3-6 - Adaptation climat chaud Porcs
BOW 2024 - 3-6 - Adaptation climat chaud Porcs
 
Agrivoltaïsme et filière ovine en Dordogne
Agrivoltaïsme et filière ovine en DordogneAgrivoltaïsme et filière ovine en Dordogne
Agrivoltaïsme et filière ovine en Dordogne
 
BOW 2024-3-10 - Batcool Petits ruminants
BOW 2024-3-10 - Batcool Petits ruminantsBOW 2024-3-10 - Batcool Petits ruminants
BOW 2024-3-10 - Batcool Petits ruminants
 
BOW 2024 - L'enrichissement du milieu des chèvres laitières
BOW 2024 - L'enrichissement du milieu des chèvres laitièresBOW 2024 - L'enrichissement du milieu des chèvres laitières
BOW 2024 - L'enrichissement du milieu des chèvres laitières
 
Bow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminants
Bow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminantsBow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminants
Bow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminants
 
BOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcins
BOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcinsBOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcins
BOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcins
 
BOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équine
BOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équineBOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équine
BOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équine
 

Comment retrouver la forme récursive

  • 1. NB : Téléchargez la présentation pour voir l’animation
  • 2.  Ecrire une fonction récursive en C qui permet de convertir un entier en binaire  L’astuce est la suivante : Soit 42 est l’entier à convertir, sa conversion binaire est 101010
  • 3.  Soit: 42 2 210 2 1 10 0 2 5 1 2 2 2 21 0 1 0 Le résultat de 42 est 101010 (lecture inverse des restes) 1 – La première étape pour établir une forme récursive est de chercher une condition d’arrêt : Quand dois-je m’arrêter? Sinon l’appel récursif sera infini ou finira avec une erreur!
  • 4.  Dans ce cas, la condition d’arrêt est lorsque je trouve un « 0 » comme quotient 42 2 210 2 1 10 0 2 5 1 2 2 2 21 0 1 0
  • 5.  Ainsi la première forme de notre fonction récursive est la suivante int Binaire (int nbre_a_convertir){ if(nbre_a_convertir / 2 == 0) return nbre_a_convertir % 2; }  La question qui se pose maintenant est : comment atteindre cette condition d’arrêt?
  • 6.  Il faut trouver un lien entre le nombre à entrer au départ et la condition d’arrêt.
  • 7.  Dresser l’arbre de dépendance entre les appels récursifs Binaire(42) Binaire(21) Binaire(10) Binaire(5) Binaire(2) Binaire(1)
  • 8.  Dresser l’arbre de dépendance entre les appels récursifs Binaire(42) Binaire(21) Binaire(10) Binaire(5) Binaire(2) Binaire(1) Retourne 1 : le reste Fait appel à Binaire(1) Fait appel à Binaire(2) Fait appel à Binaire(5) Fait appel à Binaire(10) Fait appel à Binaire(21) Pour passer de 42 à 21 il faut prendre le quotient de 42/2 La même chose pour les autres : pour passer d’un appel à un autre il faut passer le quotient du nombre courant
  • 9.  Ca veut dire Binaire(42) Binaire(21) Binaire(10) Binaire(5) Binaire(2) Binaire(1) Retourne 1 : le reste Fait appel à Binaire(2 DIV 2) Fait appel à Binaire(5 DIV 2) Fait appel à Binaire(10 DIV 2) Fait appel à Binaire(21 DIV 2) Fait appel à Binaire(42 DIV 2)
  • 10.  Ainsi la nouvelle forme de la méthode récursive est int Binaire (int nbre_a_convertir){ if(nbre_a_convertir / 2 == 0) return nbre_a_convertir % 2; else return Binaire(nbre_a_convertir/2); }
  • 11.  Testez votre méthode : le résultat de 42 sera 1 .. Où sont passés les autres chiffres?  Tel qu’on a écrit la méthode, nous ne sommes pas entrain de sauvegarder les résultats des états intermédiaires avant d’atteindre la condition d’arrêt
  • 12.  Pour ne pas les perdre, on suggère de multiplier par 10 l’appel récursif  Pourquoi? › On remarque que le premier nombre à être retourné est celui de la condition d’arrêt et c’est bien le premier nombre à gauche du résultat soit 101010 › Voyons comment le résultat se forme
  • 13.  Dresser l’arbre de dépendance entre les appels récursifs Binaire(42) Binaire(21) Binaire(10) Binaire(5) Binaire(2) Binaire(1) Retourne 1 : le reste Fait appel à Binaire(1)*10 et retourne 1*10=10 Fait appel à Binaire(2)*10 et retourne 10*10=100 Fait appel à Binaire(5)*10 et retourne 100*10=1000 Fait appel à Binaire(10)*10 et retourne 1000*10=10000 Fait appel à Binaire(21)*10 et retourne 10000*10=10000
  • 14.  Chouette ! On a pu décaler le 1 à gauche mais le résultat est à côté de la plaque …  Que faire? › Ici il faut remarquer une nouvelle caractéristique (pour la découvrir il faut tester sur votre brouillon la conversion de plusieurs nombres pour pouvoir la détecter)
  • 15.  Remarquez le lien entre 4DIV2=2 et 4 › 10 et 100 (10*10=100)  Remarquez le lien entre 8DIV2=4 et 8 › 100 et 1000 (100*10=1000)  Remarquez le lien entre 16DIV2=8 et 16 › 1000 et 10000 (1000*10=10000) › On peut dire que si j’ai le nombre binaire d’un nombre entier pair alors il suffit de le multiplier par 10 pour trouver le nombre binaire de son double
  • 16.  Remarquez le lien entre 5DIV2=2 et 5 › 10 et 101 (10*10 +1 =101)  Remarquez le lien entre 7DIV2=3 et 7 › 11 et 111 (11*10+1=111)  Remarquez le lien entre 9DIV2=4 et 9 › 100 et 1001 (100*10+1=1001) › On peut dire que si j’ai le nombre binaire d’un nombre entier impair, il faut prendre le nombre binaire du quotient de sa division par 2 le multiplier par 10 et le rajouter 1
  • 17.  La forme finale de notre méthode est : int Binaire (int nbre_a_convertir){ if(nbre_a_convertir / 2 == 0) return nbre_a_convertir % 2; else if (n % 2 == 0) // n est pair return Binaire(nbre_a_convertir/2)*10; else return Binaire(nbre_a_convertir/2)*10+1; } else return Binaire(nbre_a_convertir/2); }
  • 18.  Übung macht den Meister ! › En s’exerçant on devient « maître » › Pour comprendre la récursivité, défiez-vous avec plusieurs exercices › Bon courage!