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

Langage Java Discussion :

Tour de Hanoi


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 2
    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
    30
     
    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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 7
    Par défaut
    Le code suivant utilise la récursivité : http://recursivite.developpez.com/?page=page_1

    C'est une technique qu'il est intéressant de connaitre pour un développeur (ce n'est pas utilisé exclusivement en java).

    Un truc pour bien se rendre compte du processus c'est d'exécuter le code en mode debug : http://eclipse.developpez.com/faq/?p...ement#debugger

    Si tu enlèves le if(n==0)
    {
    return;
    }
    tu rentres dans une boucle infinie !
    En effet, la méthode s'appelle elle-même jusqu'à ce que le n (c'est à dire le nombre de disque) soit à 0.

    Je te conseille d'essayer de refaire l'exercice quand même !

  3. #3
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Par défaut
    Pourquoi crée deux fois le même topic, dans 2 catégories différentes, avec deux pseudo similaires ?

    mais sinon en effet, étudier du code déjà fait ne t'apportera pas grand chose en comparaison de développer ta solution toi même.

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