CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

récursivité

extasy89
extasy89
Niveau 6
04 juillet 2005 à 10:44:01

un enorme merci a tout le monde :) voila en fin un concept que je connais :content:

JeanYvesYves
JeanYvesYves
Niveau 10
04 juillet 2005 à 11:43:41

moi j´ai un exemple de la puissance de la récursivité.

Imaginons que vous ayez une fonction
couleur = Getpixel(x,y)
et une fonction :
SetPixel(x,y,couleur)

Je vous demande de programemr uen fonction " pot de peinture" de paint ( tout le monde connait le pot de peinture ? )

Le prototype est le suivant :

void Paint(int x,int y,couleur source,couleur dest)

x et y sont l´endroit ou vous cliquez
source est la couleur sur laquelle vous avez cliqué. Dest est la couleur a laquelle vous voulez peindre.

Comment implémentez vous cela ?
Sachant que la zone peut etre super tordue ( genre un labyrynthe a remplir par exemple ! !)

Moi je vous dis :
6 lignes avec des la récursivité :) et qui marche a tous les coups !

A suivre ! !

extasy89
extasy89
Niveau 6
04 juillet 2005 à 11:51:22

moi je parie qu´il faut faire un truc du genre:

Colorer_pixel_et_proches(Couleur ANCIENNE_COULEUR, Couleur NOUVELLE_COULEUR, int x, int y)
{
if(Couleur_Image[x][y] == ANCIENNE_COULEUR)
{
Couleur_Image[x][y] = NOUVELLE_COULEUR;

Colorer_pixel_et_proches(ANCIENNE_COULEUR, NOUVELLE_COULEUR, x-1, y);
Colorer_pixel_et_proches(ANCIENNE_COULEUR, NOUVELLE_COULEUR, x+1, y);
Colorer_pixel_et_proches(ANCIENNE_COULEUR, NOUVELLE_COULEUR, x, y-1);
Colorer_pixel_et_proches(ANCIENNE_COULEUR, NOUVELLE_COULEUR, x, y+1);
}
}

:gni:

non en fait j´ai aucun merite car ptival a deja poster la reponse. si tu regarde dans les premieres reponses il a ecrite ton exemple et a meme dit que ca venait de toi :oui:

JeanYvesYves
JeanYvesYves
Niveau 10
04 juillet 2005 à 11:57:49

oups ! c´est vrai :) désolé, j´avais pas tout lu ! :-)

Ptival
Ptival
Niveau 10
04 juillet 2005 à 12:01:48

Hé vi JYY ça t´apprendra à pas lire les messages trop longs :)

J´avais cité ton exemple :p

JeanYvesYves
JeanYvesYves
Niveau 10
04 juillet 2005 à 12:07:25

merci :-) mais c´set vrai que j´avais pas pris le temps de lire, lol !

lag-it
lag-it
Niveau 10
04 juillet 2005 à 12:41:27

lord_kalipsy > " L´utilisation de la récursivité ( en mon humble avis) ne fait que gaspiller une montagne de resources."

Nt nt, relis ce que j´ai écrit : c´est issu de mon cour d´info de sup. Ca dépend de la récursivité envisagée et du but recherché ( vitesse et perf).
En outre, je constate souvent que les personnes cherchant à dérecursifier à tout prix passent parfois par d´une pile dans les cas complexes, ce qui revient au même au final.
Idem comment implémenter un algo. de flood-fill ( l´exemple cité par extasy ou JYY plus haut) non récursivement ? Pas simple et les perfs seron nulles.

Il ne faut surtout pas partir avec l´à priori simpliste que la récursivité c´est nul... de nombreux programme manipulant des listes chainées ou des programmes de pixels/vertex shader sont récursif car il s´agit de la meilleure méthode applicable.

( au fait, il pmanque un return dans ma fonction facto_util :) )

JeanYvesYves
JeanYvesYves
Niveau 10
04 juillet 2005 à 13:44:44

Tout a fait :)
Allez, j´en ajoute un, qui vient aussi de mon tuto, mais qui illustre bien :

faites un algo qui affiche tous les fichiers de votre disque dur ( avec les sous repertoires et tout) : vous avez une fonction pour rentrer dans un rep, une autre pour en sortir, et une pour afficher les fichier dans le dossier courant...

Sans récursivité : glup !

lag-it
lag-it
Niveau 10
04 juillet 2005 à 13:48:41

Mais il y a aussi des cas ou la dérécursifications permet d´obtenir des résultat plus rapides.
Dans le cas de la résolution d´une équation de logique combinatoire modélisée sous la forme d´un arbre binaire, la dérecursification permet de passer d´une complexité en 2^n à une complexité en n : le gain est vraiment non négligeable. C´était le sujet de mon tipe.

Donc au final, selon le cas on privilégiera l´une des 2 méthode, mais il ne faut pas chercher l´itérativité à tout prix...

lord_kalipsy
lord_kalipsy
Niveau 10
04 juillet 2005 à 15:12:18

Tout cela pour dire que, finalement, le choix dépend de la situation. ^^

JYY -> Le pire c´est que j´ai dû utiliser un algo récursif du genre pot de peinture pur mon démineur . ..

lag-it
lag-it
Niveau 10
04 juillet 2005 à 17:31:07

" Le pire c´est que j´ai dû utiliser un algo récursif du genre pot de peinture pur mon démineur . .."

Mais nan pas le pire, enfin ! :)

C´est récursif terminal : y a pas mieux !
Il faut s´enlever cette idée que la récursivité est mauvaise de la tête...

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment