Écrire du Code pour résoudre l’énigme de la tour de Hanoi

Q: quelle est la meilleure façon d’obtenir la somme de tous les nombres entiers compris entre 1 et 100 ?

A: tout d’abord obtenir la somme de tous les nombres entiers compris entre 1 et 99, puis ajouter 100.

Silly, droite ? Il s’agit d’un exemple d’une technique puissante de fracture régner en programmation informatique appelée « recursion ». Récursivité traite une tâche de calcul comme un ensemble de calculs plus petits, similaires, avec le prochain calcul plus petit étant calculée, puis l’autre et l’autre, jusqu'à ce que vous arrivez à un « scénario de référence » avec une réponse connue. Pour l’étape suivante de l’exemple ci-dessus, pour obtenir la somme des nombres entiers compris entre 1 et 99, vous simplement additionner les nombres entiers compris entre 1 et 98, puis ajouter 99. Si vous continuez vers le bas de la chaîne, vous obtiendrez au cas de base de la somme des nombres entiers compris entre 1 et 1, que nous connaissons est 1.

Une bonne utilisation de la récursivité est d’écrire un programme qui peut vous donner la solution de l’énigme de la tour de Hanoi. Ce puzzle est montré dans l’image sur cette page. L’objectif est de déplacer tous les disques depuis le premier poste au troisième poste. Les règles du puzzle sont :

  • Vous ne pouvez déplacer un disque à la fois d’un poste à l’autre, c'est-à-dire à un moment donné, au plus un disque peut être sur un poteau.
  • Vous pouvez déplacer n’importe quel disque vers le second poste comme une aire de repos.
  • Les disques ne peuvent être déplacés sur le dessus un disque plus petit.

Comment peut ce puzzle être décomposé en parties plus petites ? Comme le montrent les images, cette version de 7-disque du puzzle tour de Hanoi peut être résolue comme :

  1. Résoudre la version 6 disques du puzzle de A de poste à poste B.
  2. Déplacez le disque 7 de post A poster C.
  3. Résoudre la version 6 disques du puzzle à nouveau, cette fois de poster B de poster C.

Pour cela instructable, je vais utiliser JavaScript comme langage de programmation afin de pouvoir exécuter ceci dans un navigateur web standard. Il est utile de se familiariser avec certains concepts de programmation base en informatique, mais même si vous n’êtes pas, j’espère que cette volonté instructable être intéressant.

Si vous aimez cette instructable, s’il vous plaît votez pour moi au concours de créations codé avant 18 mai 2015. Merci.

Nous allons commencer à coder !

Articles Liés

Comment faire pour résoudre les 15 Puzzle

Comment faire pour résoudre les 15 Puzzle

ces instructions fournissent une méthode pour résoudre le casse-tête de 15. Les instructions fournies ici sont destinés à être un processus étape par étape décrivant un algorithme pour résoudre l'énigme 15. Ces instructions ne sont pas censées être u
À l’aide de Codea pour l’iPad

À l’aide de Codea pour l’iPad

Codea par deux vit à gauche est l'un de la meilleure qualité de codage des environnements disponibles pour l'iPad. À l'aide de Codea sur l'iPad, c'est de loin le meilleur codage expérience on puisse espérer avoir sur un iPad. Pour ceux d'entre vous q
Comment faire pour résoudre les puzzles de sudoku (débutant et avancé)

Comment faire pour résoudre les puzzles de sudoku (débutant et avancé)

Dans ce guide que je vais vous expliquer tous les trucs que j'ai trouvé pour réduire les possibilités dans un sudoku puzzle et finalement le résoudre. Chaque étape dans ce instructable va être d'un truc différent donc si vous rencontrez déjà, vous co
Comment faire pour résoudre les problèmes techniques

Comment faire pour résoudre les problèmes techniques

ces Instructables ont été créés pour aider les jeunes aspirants ingénieurs à développer un ensemble de compétences critiques qui les aideront dans leur scolarité et tout au long de leur carrière.  Cet ensemble de compétences deviendra un processus ré
Générateur de code pour des menus personnalisés Android/Arduino activer et désactiver les sorties de l’Arduino. Andriod/Arduino pour les débutants. Absolument aucune programmation requise

Générateur de code pour des menus personnalisés Android/Arduino activer et désactiver les sorties de l’Arduino. Andriod/Arduino pour les débutants. Absolument aucune programmation requise

Mise à jour : un utilisateur invité pour sous-menu soutien. pfodApp a toujours soutenu des sous-menus, mais j'ai ajouté des sous-menus à pfodDesigner. L'instructable Design A Custom Menu System vous montre comment utiliser pfodDesigner pour générer u
Courtes blink code pour Arduino

Courtes blink code pour Arduino

Aujourd'hui, je vais vous montrer comment écrire du code vraiment court pour clignoter défaut de Arduino LED comme a été affecté à bord du code PIN 13. Pourquoi je fais cela ? Car, le code de clignotement est le premier code qui vient commencer à jou
Comment faire pour résoudre les problèmes de physique

Comment faire pour résoudre les problèmes de physique

physique, malgré sa réputation est une science étonnante et avec pas autant d'effort que vous attendez vous pouvez faire des calculs sur des phénomènes très intéressant et pratique. Dans ce instructable je vais vous montrer comment faire et comprendr
Chérie, j’ai rétréci l’Arduino : passant de Arduino à ATtiny et écrire votre code en pure AVR-C

Chérie, j’ai rétréci l’Arduino : passant de Arduino à ATtiny et écrire votre code en pure AVR-C

Arduino est un grand dur - et la plate-forme logicielle, mais avec toutes ses caractéristiques, c'est aussi un peu gonflé et souvent vous avez seulement besoin d'une petite partie de toutes les fonctionnalités. Votre projet nécessite parfois d'avoir
Python codant pour Android Minecraft PE

Python codant pour Android Minecraft PE

La version de Raspberry PI de Minecraft permet vous script en Python, faire des dessins de fractale, dessins, graphiques de la tortue, jeux simples, etc.. La même chose peut être faite sur une version de bureau avec mon Mod de confiture de framboise
La façon la plus simple pour résoudre le cube rubix

La façon la plus simple pour résoudre le cube rubix

je vais vous montrer la façon la plus simple pour résoudre le cube de rubik pour les débutants!!!Étape 1: les noms d'algrothims R = droit vers le hautL = gauche vers le hautU = haut droitRI = droit vers le basLi = gauche vers le basUI = haut gaucheF
Comment faire pour résoudre Cube d’un Rubin ! (Également quelques modèles jolis!)

Comment faire pour résoudre Cube d’un Rubin ! (Également quelques modèles jolis!)

Dans ce instructable nous allons apprendre comment résoudre un cube Rubik en suivant certaines règles et algorithmes. Si vous essayez vraiment dur pendant une heure, peut-être moins vous serez en mesure de résoudre un cube Rubik toujours !Il y a un c
Comment télécharger les codes pour nRF51822 à l’aide de nRF51-DK

Comment télécharger les codes pour nRF51822 à l’aide de nRF51-DK

Aujourd'hui, je vais vous montrer comment faire pour télécharger des codes (alias ; microprogramme) toute balise Bluetooth a nRF51822 puce de kit de développement nRF51-DK via connexion filaire. nRF51-DK peut servir à hardwares de Bluetooth phare pro
Comment faire pour résoudre le cube Rubik Ball Gear

Comment faire pour résoudre le cube Rubik Ball Gear

Je vais vous montrer comment résoudre le Cube de Rubik Ball de l'engin. Même si elle dit qu'il est classé 5 étoiles pour la difficulté, c'est littéralement plus facile que le 2 x 2.Étape 1: bords Choisissez une couleur à commencer par. Dans ce tutori
Comment faire pour résoudre le Cube Rubik 3 x 3

Comment faire pour résoudre le Cube Rubik 3 x 3

Bienvenue sur mon guide pour résoudre le 3 x 3 Rubiks Cube. Si elles peuvent sembler impossibles à tout d'abord, avec un peu de pratique et de patience, n'importe qui peut le résoudre. Le cube que j'utilise est la stickerless Zhanchi de Dayan (trouvé