IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Tour de Hanoi


Sujet :

avec Java

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mars 2011
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Tour de Hanoi
    Bonjour tout le monde!
    J'ai un projet sur la résolution d'une tour de hanoi en java.
    J'ai fait des recherches et voici ce que j'ai choisi comme code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    package hanoi;
     
    import javax.swing.JOptionPane;
    /*
    - déplacer les disques du pilier de départ au pilier d'arrivée en utilisant un pilier intermédiaire
    - un disque d'un certain diamètre ne peut pas être placé au dessus d'un disque de diamètre inférieur.
    si on a "n" disques à déplacer :
    - d'abord on déplace les premiers n-1 disques de depart vers intermediaire(en utilisant arrivée comme tour intermediaire)
    - ensuite on déplace le dernier disque(le disque "n") de départ vers arrivée
    - enfin on déplace les n-1 disques de intermediaire vers arrivée(en utilisant le pilier de départ comme tour intermediaire)
    NB:hn=(2 exposant(n))-1(avec hn le nbre de déplacement de disques nécéssaire)
    */
     
    public class Hanoi {
      public static void hanoi(int n, String dep, String temp, String arr) {
        if (n == 0) return;
        hanoi(n-1, dep, arr, temp);
        System.out.println("Déplacez le disque " + n + " de " + dep + " à " + arr);
        hanoi(n-1, temp, dep, arr);
      }
     
      public static void main(String[] args) {
        String a;
        int n;
        a = JOptionPane.showInputDialog("Combien de diques ?");
        n = Integer.parseInt(a);
        hanoi(n, "A", "B", "C"); //A,B,C les 3 piliers:A le pilier de départ,B le pilier intermediaire,C le pilier d'arrivée
      }
    }
    Bon le probleme est que je ne serai pas à mesure d'expliquer ce code à mon prof, surtout la méthode hanoi, je n'arrive pas à comprendre comment elle tourne, à quoi sert le if(n==0)return;?
    Moi je pense que n n'est jamais égal à 0 mais quand je mets cette ligne en commentaire,rien ne marche.
    SVP si quelqu'un peut bien m'expliquer ce code, je lui serai très reconnaissant. Merci d'avance!

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Dans ce cas je te suggère de travailler un peu la notion de récursivité, de jouer avec et d'en prendre l'habitude.

    Le programme deviendra d'un coup bien plus clair.

    hanoi() est récursif : chaque appel de hanoi() avec N disques fait deux nouveaux appels de hanoi() avec N-1 disques.

    Donc quand tu appelles hanoi() avec 1 disque, il se passe quoi ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éclairé
    Homme Profil pro
    NoOb
    Inscrit en
    Mai 2007
    Messages
    554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : NoOb

    Informations forums :
    Inscription : Mai 2007
    Messages : 554
    Points : 852
    Points
    852
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Donc quand tu appelles hanoi() avec 1 disque, il se passe quoi ?
    Il se passe ca!

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Ouaip. C'est loin d'être un cas isolé aujourd'hui.

    Il semble que la section Java (au moins) soit sous l'assaut d'un troll créateur compulsif de comptes.
    Je n'ai pas voulu être trop sûr de ça dès le début, mais ça ne fait plus trop de doute. Je suppose que nos modos géreront ça comme ils pourront.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Tour de Hanoi
    Par David Fleury dans le forum Algorithmes et structures de données
    Réponses: 24
    Dernier message: 09/06/2007, 17h59
  2. Réponses: 13
    Dernier message: 11/12/2006, 14h44
  3. Tours de Hanoi
    Par leakim56 dans le forum C
    Réponses: 11
    Dernier message: 23/06/2006, 13h02
  4. Tour de Hanoi
    Par issou dans le forum C
    Réponses: 9
    Dernier message: 22/10/2005, 19h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo