From e5a929d6483ca012dda40a46a44c0a742618498f Mon Sep 17 00:00:00 2001 From: Shivam Thorat <131280083+shivamuser75@users.noreply.github.com> Date: Tue, 1 Oct 2024 20:28:20 +0530 Subject: [PATCH] Add basic recursion algorithms --- .../com/thealgorithms/recursion/Factorial.java | 11 +++++++++++ .../com/thealgorithms/recursion/Fibonacci.java | 11 +++++++++++ .../thealgorithms/recursion/Permutations.java | 17 +++++++++++++++++ .../com/thealgorithms/recursion/Subsets.java | 15 +++++++++++++++ .../thealgorithms/recursion/TowerOfHanoi.java | 14 ++++++++++++++ 5 files changed, 68 insertions(+) create mode 100644 src/main/java/com/thealgorithms/recursion/Factorial.java create mode 100644 src/main/java/com/thealgorithms/recursion/Fibonacci.java create mode 100644 src/main/java/com/thealgorithms/recursion/Permutations.java create mode 100644 src/main/java/com/thealgorithms/recursion/Subsets.java create mode 100644 src/main/java/com/thealgorithms/recursion/TowerOfHanoi.java diff --git a/src/main/java/com/thealgorithms/recursion/Factorial.java b/src/main/java/com/thealgorithms/recursion/Factorial.java new file mode 100644 index 000000000000..68269208a995 --- /dev/null +++ b/src/main/java/com/thealgorithms/recursion/Factorial.java @@ -0,0 +1,11 @@ +package com.thealgorithms.recursion; + +public class Factorial { + + public static int factorial(int n) { + if (n == 0) { + return 1; + } + return n * factorial(n - 1); + } +} diff --git a/src/main/java/com/thealgorithms/recursion/Fibonacci.java b/src/main/java/com/thealgorithms/recursion/Fibonacci.java new file mode 100644 index 000000000000..c800387c56be --- /dev/null +++ b/src/main/java/com/thealgorithms/recursion/Fibonacci.java @@ -0,0 +1,11 @@ +package com.thealgorithms.recursion; + +public class Fibonacci { + + public static int fibonacci(int n) { + if (n <= 1) { + return n; + } + return fibonacci(n - 1) + fibonacci(n - 2); + } +} diff --git a/src/main/java/com/thealgorithms/recursion/Permutations.java b/src/main/java/com/thealgorithms/recursion/Permutations.java new file mode 100644 index 000000000000..80731f32a1e9 --- /dev/null +++ b/src/main/java/com/thealgorithms/recursion/Permutations.java @@ -0,0 +1,17 @@ +package com.thealgorithms.recursion; + +import java.util.ArrayList; + +public class Permutations { + + public static void permute(String str, String prefix, ArrayList result) { + if (str.length() == 0) { + result.add(prefix); + } else { + for (int i = 0; i < str.length(); i++) { + String rem = str.substring(0, i) + str.substring(i + 1); + permute(rem, prefix + str.charAt(i), result); + } + } + } +} diff --git a/src/main/java/com/thealgorithms/recursion/Subsets.java b/src/main/java/com/thealgorithms/recursion/Subsets.java new file mode 100644 index 000000000000..188cf585c045 --- /dev/null +++ b/src/main/java/com/thealgorithms/recursion/Subsets.java @@ -0,0 +1,15 @@ +package com.thealgorithms.recursion; + +import java.util.ArrayList; + +public class Subsets { + + public static void subset(String prefix, String str, ArrayList result) { + if (str.length() == 0) { + result.add(prefix); + return; + } + subset(prefix + str.charAt(0), str.substring(1), result); + subset(prefix, str.substring(1), result); + } +} 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..9db2a10fc8b9 --- /dev/null +++ b/src/main/java/com/thealgorithms/recursion/TowerOfHanoi.java @@ -0,0 +1,14 @@ +package com.thealgorithms.recursion; + +public class TowerOfHanoi { + + public static void solve(int n, char from, char to, char aux) { + if (n == 1) { + System.out.println("Move disk 1 from rod " + from + " to rod " + to); + return; + } + solve(n - 1, from, aux, to); + System.out.println("Move disk " + n + " from rod " + from + " to rod " + to); + solve(n - 1, aux, to, from); + } +}