Tour de Hanoi

Discutez d'informatique ici !
Morpheus
Membre Naturel
Messages: 36
Enregistré le: 02 Fév 2006, 18:38

Tour de Hanoi

par Morpheus » 09 Juin 2006, 17:16

Salut,

j'aurais aimé savoir comment se passe l'algo pour les tours de Hanoi.

Merci



Quidam
Membre Complexe
Messages: 3401
Enregistré le: 03 Fév 2006, 16:25

par Quidam » 10 Juin 2006, 01:33

Bonjour,

Code: Tout sélectionner
routine hanoi(n,A,B,C)
{
   // Transporte n disques de A à B en utilisant par C comme place intermédiaire
   // A, B et C sont les trois numéros 0,1,2 pas nécessairement
   // dans cet ordre

   si n=1 alors prendre le disque situé en haut de A et le placer sur B
   sinon
       hanoi(n-1,A,C,B)  // Transporter n-1 disques de A à C pour liberer le n-ième
       transporter le disque situé en haut de la pile A sur la pile B
       hanoi(n-1,C,B,A)  // Transporter n-1 disques de C à B
}


Voilà !

olivthill
Membre Relatif
Messages: 349
Enregistré le: 21 Avr 2006, 17:17

par olivthill » 10 Juin 2006, 01:33

C'est un cas typique où il faut utiliser la récursivité.

Quidam
Membre Complexe
Messages: 3401
Enregistré le: 03 Fév 2006, 16:25

par Quidam » 10 Juin 2006, 01:40

olivthill a écrit:C'est un cas typique où il faut utiliser la récursivité.


La récursivité dans l'esprit : sans aucun doute. Mais il ne faut jamais oublier que le récursivité au sens informatique du terme (celle que j'ai exhibée ci-dessus) est très consommatrice de ressources calcul... C'est très élégant, très sobre comme programmation, mais le CPU pédale comme un fou si on programme comme ça...

eusebius
Membre Relatif
Messages: 134
Enregistré le: 28 Avr 2006, 18:53

par eusebius » 12 Juin 2006, 11:29

Quidam a écrit:La récursivité dans l'esprit : sans aucun doute. Mais il ne faut jamais oublier que le récursivité au sens informatique du terme (celle que j'ai exhibée ci-dessus) est très consommatrice de ressources calcul... C'est très élégant, très sobre comme programmation, mais le CPU pédale comme un fou si on programme comme ça...

Le CPU ça va, c'est surtout la mémoire (pile d'appel) qui y est sensible. Mais pour un problème de dimension raisonnable, sur une machine qui n'est pas une antiquité, ça me pose pas de problèmes existentiels. A mon avis le plus gros risque de la récursivité, c'est de foirer l'implémentation :langue:

Patastronch
Membre Irrationnel
Messages: 1345
Enregistré le: 22 Aoû 2005, 23:53

par Patastronch » 12 Juin 2006, 12:06

Et puis pas mal de compilateurs bien foutu (dans certains langages seulement et cetaines formes de récursivité seulement), traduisent maintenant la récursivité en itératif a la compilation. Donc ca commence a ne plus etre vrai les overflows fréquent de la récursion.

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite