O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
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...
 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 é...
 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_conver...
 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)
Binai...
 Dresser l’arbre de dépendance entre les
appels récursifs
Binaire(42)
Binaire(21)
Binaire(10)
Binaire(5)
Binaire(2)
Binai...
 Ca veut dire
Binaire(42)
Binaire(21)
Binaire(10)
Binaire(5)
Binaire(2)
Binaire(1) Retourne 1 : le reste
Fait appel à Bin...
 Ainsi la nouvelle forme de la méthode
récursive est
int Binaire (int nbre_a_convertir){
if(nbre_a_convertir / 2 == 0)
re...
 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, n...
 Pour ne pas les perdre, on suggère de
multiplier par 10 l’appel récursif
 Pourquoi?
› On remarque que le premier nombre...
 Dresser l’arbre de dépendance entre les
appels récursifs
Binaire(42)
Binaire(21)
Binaire(10)
Binaire(5)
Binaire(2)
Binai...
 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...
 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*1...
 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*...
 La forme finale de notre méthode est :
int Binaire (int nbre_a_convertir){
if(nbre_a_convertir / 2 == 0)
return nbre_a_c...
 Übung macht den Meister !
› En s’exerçant on devient « maître »
› Pour comprendre la récursivité, défiez-vous avec
plusi...
Próximos SlideShares
Carregando em…5
×

Comment retrouver la forme récursive

402 visualizações

Publicada em

Un petit exercice pour montrer comment peut-on élaborer une forme récursive d'un problème donné

Publicada em: Engenharia
  • accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... ...................................ALL FOR EBOOKS................................................. Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy,
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • DOWNLOAD THAT BOOKS/FILE INTO AVAILABLE FORMAT - (Unlimited) ......................................................................................................................... ......................................................................................................................... Download FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes Christian, Classics, Comics, Contemporary, Cookbooks, Art, Biography, Business, Chick Lit, Children's, Manga, Memoir, Music, Science, Science Fiction, Self Help, History, Horror, Humor And Comedy, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance,
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui

Comment retrouver la forme récursive

  1. 1. NB : Téléchargez la présentation pour voir l’animation
  2. 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. 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. 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. 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. 6.  Il faut trouver un lien entre le nombre à entrer au départ et la condition d’arrêt.
  7. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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!

×