Support free tutorials

vogella training Training Books

Towers of Hanoi - Java - Tutorial

Lars Vogel

Version 0.1


Towers of Hanoi in Java

This article describes how to solve the Towers of Hanoi in Java.

Table of Contents

1. Towers of Hanoi
2. Implementation in Java
3. About this website
3.1. Donate to support free tutorials
3.2. Questions and discussion
3.3. License for this tutorial and its code
4. Links and Literature
4.1. Source Code
4.2. General

1. Towers of Hanoi

The towers of hanoi is a popular problem. You have three poles and n disks which fit on the poles. All disks have different size. They are stacked on pole 1 in the orders of their size. The largest disk is on the bottom, the smallest is on the top.

The task is to move all disk from pole 1 to pole 3 under the following restrictions.

  • Only one disk can be moved

  • A larger disk can not be placed on a smaller disk.

The recursive algorithm works like the following: move n-1 disk from the starting pole to the pole which is neither start nor target (intermediate), move disk n to the target pole and then move n-1 disk from the intermediate pole to the target pole. The n-1 disks are moved recursively.

2. Implementation in Java

Create a Java project "de.vogella.algorithms.towersofhanoi".

Create the following program.

package de.vogella.algorithms.towersofhanoi;

/** * Towers of Hanoi * Pole are labeled 1, 2,3 * Each disk is also labeled * @author Lars Vogel * */
public class TowersOfHanoi { public static void move(int n, int startPole, int endPole) { if (n== 0){ return; } int intermediatePole = 6 - startPole - endPole; move(n-1, startPole, intermediatePole); System.out.println("Move " +n + " from " + startPole + " to " +endPole); move(n-1, intermediatePole, endPole); } public static void main(String[] args) { move(5, 1, 3); } }

3. About this website

3.1. Donate to support free tutorials

Please consider a contribution Support free tutorials if this article helped you. It will help to maintain our content and our Open Source activities.

3.2. Questions and discussion

Writing and updating these tutorials is a lot of work. If this free community service was helpful, you can support the cause by giving a tip as well as reporting typos and factual errors.

If you find errors in this tutorial, please notify me (see the top of the page). Please note that due to the high volume of feedback I receive, I cannot answer questions to your implementation. Ensure you have read the vogella FAQ as I don't respond to questions already answered there.

3.3. License for this tutorial and its code

This tutorial is Open Content under the CC BY-NC-SA 3.0 DE license. Source code in this tutorial is distributed under the Eclipse Public License. See the vogella License page for details on the terms of reuse.

4. Links and Literature

4.1. Source Code

Source Code of Examples

4.2. General

Not listed yet