Tower of Hanoi is a mathematical puzzle where we have three rods and n disks. The objective of the puzzle is to move the entire stack to another rod, obeying the following simple rules:

1) Only one disk can be moved at a time.

2) Each move consists of taking the upper disk from one of the stacks and placing it on top of another stack i.e. a disk can only be moved if it is the uppermost disk on a stack.

3) No disk may be placed on top of a smaller disk.

## Java

`// Java recursive program to solve tower of hanoi puzzle ` ` ` `class` `GFG ` `{ ` ` ` `// Java recursive function to solve tower of hanoi puzzle ` ` ` `static` `void` `towerOfHanoi(` `int` `n, ` `char` `from_rod, ` `char` `to_rod, ` `char` `aux_rod) ` ` ` `{ ` ` ` `if` `(n == ` `1` `) ` ` ` `{ ` ` ` `System.out.println(` `"Move disk 1 from rod "` `+ from_rod + ` `" to rod "` `+ to_rod); ` ` ` `return` `; ` ` ` `} ` ` ` `towerOfHanoi(n-` `1` `, from_rod, aux_rod, to_rod); ` ` ` `System.out.println(` `"Move disk "` `+ n + ` `" from rod "` `+ from_rod + ` `" to rod "` `+ to_rod); ` ` ` `towerOfHanoi(n-` `1` `, aux_rod, to_rod, from_rod); ` ` ` `} ` ` ` ` ` `// Driver method ` ` ` `public` `static` `void` `main(String args[]) ` ` ` `{ ` ` ` `int` `n = ` `4` `; ` `// Number of disks ` ` ` `towerOfHanoi(n, \'A\', \'C\', \'B\'); ` `// A, B and C are names of rods ` ` ` `} ` `} ` |

*chevron_right*

*filter_none*

Output:

Move disk 1 from rod A to rod B Move disk 2 from rod A to rod C Move disk 1 from rod B to rod C Move disk 3 from rod A to rod B Move disk 1 from rod C to rod A Move disk 2 from rod C to rod B Move disk 1 from rod A to rod B Move disk 4 from rod A to rod C Move disk 1 from rod B to rod C Move disk 2 from rod B to rod A Move disk 1 from rod C to rod A Move disk 3 from rod B to rod C Move disk 1 from rod A to rod B Move disk 2 from rod A to rod C Move disk 1 from rod B to rod C

Please refer complete article on Program for Tower of Hanoi for more details!

## Recommended Posts:

- Java Program for Program to calculate area of a Tetrahedron
- Java Program for Program to find area of a circle
- Java Program for Program for array rotation
- Java Program for Selection Sort
- Java Program for Bubble Sort
- Java Program for Insertion Sort
- Java Program for Heap Sort
- Java Program for Radix Sort
- Java Program for n-th Fibonacci numbers
- Java Program for Counting Sort
- Java Program for ShellSort
- Java Program for Longest Common Subsequence
- Java Program 0-1 Knapsack Problem
- Java Program for Min Cost Path
- Java Program for Longest Increasing Subsequence
- Java Program for GCD of more than two (or array) numbers
- Java Program for Common Divisors of Two Numbers
- Java Program for Bitonic Sort
- Java Program for Bitonic Sort
- Java Program for Pancake sorting