From 9ca3a46c5601ffd9f8199c956cc01d3dca9c8222 Mon Sep 17 00:00:00 2001 From: kamakshipal1-tech Date: Wed, 17 Dec 2025 19:59:14 +0530 Subject: [PATCH 1/5] Add Tower of Hanoi recursion solution --- .../thealgorithms/recursion/TowerOfHanoi.java | 32 +++++++++++++++++++ .../thealgorithms/recursion/towers_of_hanoi | 32 +++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 src/main/java/com/thealgorithms/recursion/TowerOfHanoi.java create mode 100644 src/main/java/com/thealgorithms/recursion/towers_of_hanoi diff --git a/src/main/java/com/thealgorithms/recursion/TowerOfHanoi.java b/src/main/java/com/thealgorithms/recursion/TowerOfHanoi.java new file mode 100644 index 000000000000..7e3f0a7359dd --- /dev/null +++ b/src/main/java/com/thealgorithms/recursion/TowerOfHanoi.java @@ -0,0 +1,32 @@ +public class TowerOfHanoi { + + // Recursive function to solve Tower of Hanoi + // Time complexity : O(2^n) + // Space complexity:O(n) (Recursion Stack) + // n : number of disks + // src : source rod + // helper : auxiliary rod + // dest : destination rod + public static void towerOfHanoi(int n, char src, char helper, char dest) { + + // Base case: only one disk + if (n == 1) { + System.out.println("Move disk " + n + " from " + src + " to " + dest); + return; + } + + // Step 1: Move n-1 disks from source to helper + towerOfHanoi(n - 1, src, dest, helper); + + // Step 2: Move nth disk from source to destination + System.out.println("Move disk " + n + " from " + src + " to " + dest); + + // Step 3: Move n-1 disks from helper to destination + towerOfHanoi(n - 1, helper, src, dest); + } + + public static void main(String[] args) { + int n = 3; // Number of disks + towerOfHanoi(n, 'A', 'B', 'C'); + } +} diff --git a/src/main/java/com/thealgorithms/recursion/towers_of_hanoi b/src/main/java/com/thealgorithms/recursion/towers_of_hanoi new file mode 100644 index 000000000000..7e3f0a7359dd --- /dev/null +++ b/src/main/java/com/thealgorithms/recursion/towers_of_hanoi @@ -0,0 +1,32 @@ +public class TowerOfHanoi { + + // Recursive function to solve Tower of Hanoi + // Time complexity : O(2^n) + // Space complexity:O(n) (Recursion Stack) + // n : number of disks + // src : source rod + // helper : auxiliary rod + // dest : destination rod + public static void towerOfHanoi(int n, char src, char helper, char dest) { + + // Base case: only one disk + if (n == 1) { + System.out.println("Move disk " + n + " from " + src + " to " + dest); + return; + } + + // Step 1: Move n-1 disks from source to helper + towerOfHanoi(n - 1, src, dest, helper); + + // Step 2: Move nth disk from source to destination + System.out.println("Move disk " + n + " from " + src + " to " + dest); + + // Step 3: Move n-1 disks from helper to destination + towerOfHanoi(n - 1, helper, src, dest); + } + + public static void main(String[] args) { + int n = 3; // Number of disks + towerOfHanoi(n, 'A', 'B', 'C'); + } +} From 3f8a9001e2eb6abbb4960197a32b3ab3375ac3e4 Mon Sep 17 00:00:00 2001 From: kamakshipal1-tech Date: Wed, 17 Dec 2025 20:14:26 +0530 Subject: [PATCH 2/5] Remove duplicate Tower of Hanoi file --- .../thealgorithms/recursion/towers_of_hanoi | 32 ------------------- 1 file changed, 32 deletions(-) delete mode 100644 src/main/java/com/thealgorithms/recursion/towers_of_hanoi diff --git a/src/main/java/com/thealgorithms/recursion/towers_of_hanoi b/src/main/java/com/thealgorithms/recursion/towers_of_hanoi deleted file mode 100644 index 7e3f0a7359dd..000000000000 --- a/src/main/java/com/thealgorithms/recursion/towers_of_hanoi +++ /dev/null @@ -1,32 +0,0 @@ -public class TowerOfHanoi { - - // Recursive function to solve Tower of Hanoi - // Time complexity : O(2^n) - // Space complexity:O(n) (Recursion Stack) - // n : number of disks - // src : source rod - // helper : auxiliary rod - // dest : destination rod - public static void towerOfHanoi(int n, char src, char helper, char dest) { - - // Base case: only one disk - if (n == 1) { - System.out.println("Move disk " + n + " from " + src + " to " + dest); - return; - } - - // Step 1: Move n-1 disks from source to helper - towerOfHanoi(n - 1, src, dest, helper); - - // Step 2: Move nth disk from source to destination - System.out.println("Move disk " + n + " from " + src + " to " + dest); - - // Step 3: Move n-1 disks from helper to destination - towerOfHanoi(n - 1, helper, src, dest); - } - - public static void main(String[] args) { - int n = 3; // Number of disks - towerOfHanoi(n, 'A', 'B', 'C'); - } -} From 2b50b29c19dda293f49e437f9aea466dcabac084 Mon Sep 17 00:00:00 2001 From: kamakshipal1-tech Date: Thu, 18 Dec 2025 20:18:56 +0530 Subject: [PATCH 3/5] Fix Tower of Hanoi formatting and utility class structure --- .../thealgorithms/recursion/TowerOfHanoi.java | 34 ++++++++----------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/thealgorithms/recursion/TowerOfHanoi.java b/src/main/java/com/thealgorithms/recursion/TowerOfHanoi.java index 7e3f0a7359dd..21340eed0a7e 100644 --- a/src/main/java/com/thealgorithms/recursion/TowerOfHanoi.java +++ b/src/main/java/com/thealgorithms/recursion/TowerOfHanoi.java @@ -1,32 +1,26 @@ -public class TowerOfHanoi { +package com.thealgorithms.recursion; - // Recursive function to solve Tower of Hanoi - // Time complexity : O(2^n) - // Space complexity:O(n) (Recursion Stack) - // n : number of disks - // src : source rod - // helper : auxiliary rod - // dest : destination rod - public static void towerOfHanoi(int n, char src, char helper, char dest) { +/** + * Tower of Hanoi problem using recursion. + * + *

Time Complexity: O(2^n)

+ *

Space Complexity: O(n) (recursion stack)

+ */ +public final class TowerOfHanoi { + + private TowerOfHanoi() { + // Utility class + } - // Base case: only one disk + public static void towerOfHanoi(int n, char src, char helper, char dest) { if (n == 1) { System.out.println("Move disk " + n + " from " + src + " to " + dest); return; } - // Step 1: Move n-1 disks from source to helper towerOfHanoi(n - 1, src, dest, helper); - - // Step 2: Move nth disk from source to destination System.out.println("Move disk " + n + " from " + src + " to " + dest); - - // Step 3: Move n-1 disks from helper to destination towerOfHanoi(n - 1, helper, src, dest); } - - public static void main(String[] args) { - int n = 3; // Number of disks - towerOfHanoi(n, 'A', 'B', 'C'); - } } + From 1e0e407ec5a63be65e028f418b595237333d8334 Mon Sep 17 00:00:00 2001 From: kamakshipal1-tech Date: Thu, 18 Dec 2025 20:32:14 +0530 Subject: [PATCH 4/5] Fix clang-format issues in Tower of Hanoi --- .../com/thealgorithms/recursion/TowerOfHanoi.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/thealgorithms/recursion/TowerOfHanoi.java b/src/main/java/com/thealgorithms/recursion/TowerOfHanoi.java index 21340eed0a7e..b69bbebd11a3 100644 --- a/src/main/java/com/thealgorithms/recursion/TowerOfHanoi.java +++ b/src/main/java/com/thealgorithms/recursion/TowerOfHanoi.java @@ -12,9 +12,17 @@ private TowerOfHanoi() { // Utility class } + /** + * Solves the Tower of Hanoi problem. + * + * @param n number of disks + * @param src source rod + * @param helper auxiliary rod + * @param dest destination rod + */ public static void towerOfHanoi(int n, char src, char helper, char dest) { if (n == 1) { - System.out.println("Move disk " + n + " from " + src + " to " + dest); + System.out.println("Move disk 1 from " + src + " to " + dest); return; } @@ -22,5 +30,4 @@ public static void towerOfHanoi(int n, char src, char helper, char dest) { System.out.println("Move disk " + n + " from " + src + " to " + dest); towerOfHanoi(n - 1, helper, src, dest); } -} - +} \ No newline at end of file From db3da5306ee361bc9f7efc40e50a2f7141a72521 Mon Sep 17 00:00:00 2001 From: kamakshipal1-tech Date: Thu, 18 Dec 2025 20:52:35 +0530 Subject: [PATCH 5/5] Fix formatting in tower of hanoi --- .../thealgorithms/recursion/TowerOfHanoi.java | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/thealgorithms/recursion/TowerOfHanoi.java b/src/main/java/com/thealgorithms/recursion/TowerOfHanoi.java index b69bbebd11a3..871c18672503 100644 --- a/src/main/java/com/thealgorithms/recursion/TowerOfHanoi.java +++ b/src/main/java/com/thealgorithms/recursion/TowerOfHanoi.java @@ -1,10 +1,10 @@ package com.thealgorithms.recursion; /** - * Tower of Hanoi problem using recursion. + * Tower of Hanoi problem solved using recursion. * *

Time Complexity: O(2^n)

- *

Space Complexity: O(n) (recursion stack)

+ *

Space Complexity: O(n)

*/ public final class TowerOfHanoi { @@ -16,18 +16,24 @@ private TowerOfHanoi() { * Solves the Tower of Hanoi problem. * * @param n number of disks - * @param src source rod + * @param source source rod * @param helper auxiliary rod - * @param dest destination rod + * @param destination destination rod */ - public static void towerOfHanoi(int n, char src, char helper, char dest) { + public static void towerOfHanoi(int n, char source, char helper, char destination) { if (n == 1) { - System.out.println("Move disk 1 from " + src + " to " + dest); + System.out.println( + "Move disk 1 from " + source + " to " + destination + ); return; } - towerOfHanoi(n - 1, src, dest, helper); - System.out.println("Move disk " + n + " from " + src + " to " + dest); - towerOfHanoi(n - 1, helper, src, dest); + towerOfHanoi(n - 1, source, destination, helper); + + System.out.println( + "Move disk " + n + " from " + source + " to " + destination + ); + + towerOfHanoi(n - 1, helper, source, destination); } } \ No newline at end of file