begin process at 2010 02 10 17:35:16
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > TOUR HANOI

TOUR HANOI


 Information sur la source

Note :
Aucune note
Catégorie :Divers Niveau :Débutant Date de création :03/08/2004 Vu / téléchargé :5 282 / 687

Auteur : teddy_bear

Ecrire un message privé
Site perso
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

ceci est un prg qui permet de déplacer n disques d'un baton à un autre à l'aide d'un intérmédiaire, la méthode utilisée est celle de la récursivité (simple), la méthode itérative est beaucoup trop compliquée. je n vous conseil pas d'y réfléchir

Source

  • si vous avez des suggestions ou des commentaires allez-y!!
si vous avez des suggestions ou des commentaires allez-y!!


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec Zip CALLOCATOR par troctsch
Source avec Zip HEAPCOLLECTOR par troctsch
Source avec Zip GÉNÉRE UN TABLEAU DE CARACTÉRE AU FORMAT C CONTENANT LE BYTE... par kertimanoff
FRACTIONS EGYPTIENNES par lptm974
BITOPERATOR par FrancoisGauthier

Commentaires et avis

Commentaire de BruNews le 03/08/2004 23:43:20 administrateur CS

Moi je conseille justement d'y reflechir, c'est tout le contraire. C'est tout l'art de l'optimisation que de supprimer la recursivite pour passer a l'iteratif.
Penche toi donc la dessus pour ta prochaine source, il y a des bouquins entiers sur le sujet.
Reflechir est toujours bon.

Bonne continuation.

Commentaire de garslouche le 04/08/2004 10:40:22

Pour nuancer un peu je dirais que la récursivité est souvent une bonne solution théorique malheureusement limitée par la taille de la pile d'appel.
L'exemple le plus connu etant sans aucun doute la suite de fibonacci. La version récursive doit planter à l'indice 10 alors que la méthode itérative peut en supporter plusieurs milliers (et même certainement davantage)

Ceci-dit le passage à l'itératif est très souvent une simulation de la pile d'appels... en quelques sortes un tableau qui garde les résultats précédents.

D'après moi le récursif est plus beau (oui oui la beauté existe en informatique) mais moins performant.

D'ailleurs BruNews je parlerai plus d'amélioration de performances que d'optimisation car la méthode récursive a des avantages comme la lisibilité et la compréhensibilité.

Et pour teddy_bear, tu abordes ici tout juste les bases de la programmation récursive... Tu as d'ailleurs commis une faute dans ta fonction hanoi, puisqu'elle ne renvoie rien quand n<=0...
Je te rappelle le principe de base des algos récursifs :
- traitement du cas de base (c'est-à-dire le cas le plus simple)
- si le cas est plus compliqué, on découpe le problème en sous-problèmes un peu moins compliqués (diviser pour mieux régner!)
Ici tu n'as fait que la deuxieme partie

Commentaire de BruNews le 04/08/2004 10:46:26 administrateur CS

Essaie de parler 'beaute du code' a un utilisateur qui se tape le sablier sur l'ecran, tres difficile a faire passer comme pilule surtout si un concurrent propose le meme prog avec resultat immediat.

Commentaire de vecchio56 le 07/08/2004 18:21:31 administrateur CS

garslouche> la deuxieme partie de ta définition de la récursivité n'a a mon sens aucun rapport avec la récursivité a proprement parler. Je crois que tu décris plutot la programmation modulaire.
Pour ce qui est de la récursivité, je dirais qu'en effet il faut traiter à part les cas simple, ou les cas particuliers (il existe un sous ensemble sur lequel on sait résoudre le problème), et pour tous les autres cas, on doit trouver un processus qui nous permet ne nous ramener aux cas qu'on connait déja.

Commentaire de vecchio56 le 07/08/2004 18:27:04 administrateur CS

Sur la source:

conio.h pas standard
main() -> int main()
clrscr() pas standard
getch() pas standard
hanoi ne retourne rien donc mets la en void

Commentaire de garslouche le 08/08/2004 02:42:22

Je persiste et je signe... par définition une fonction récursive fait appel à elle même.
Et d'après le théorème de terminaison, une fonction récursive qui fonctionne doit utiliser une fonction décroissante dans un ensemble qui n'admet aucune fonction strictement décroissante (par exemple N)
C'est-à-dire simplifier un problème...
exemple simple : factorielle
On sait faire pour 0 : 0!= 1
Si on cherche pour 7 : trop compliqué -> on s'appuie sur 6!, là encore trop compliqué, etc... jusqu'à 0 : qu'on sait traiter

La programmation modulaire c'est juste le fait de décomposer en fonctions et sous-fonctions... rien d'algorithmique !

Commentaire de vecchio56 le 08/08/2004 10:39:29 administrateur CS

Oui la je suis d'accord, mais quand tu disais "si le cas est plus compliqué, on découpe le problème en sous-problèmes un peu moins compliqués (diviser pour mieux régner!)", avoue que ca rappelle quand même plus la programmation modulaire

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,482 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales