Tour de Hanoi
Discutez d'informatique ici !
-
Morpheus
- Membre Naturel
- Messages: 36
- Enregistré le: 02 Fév 2006, 18:38
-
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.
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités