summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormokha <mokha@cisco.com>2019-05-05 14:21:38 -0600
committermokha <mokha@cisco.com>2019-05-05 14:21:38 -0600
commit15cf738f2befd48355927c63badd4f635e3ea3f4 (patch)
tree5d2ccfcd9dcadfe76c83ec5d91ad44d95835a2e8
parent3be9177730c4a7177a9589a04b154bb10f013a61 (diff)
switch from iterative to recursive solution
-rw-r--r--assignments/assignment1/src/main/java/ca/mokhan/assignment1/HailstoneSequence.java15
-rw-r--r--assignments/assignment1/src/test/java/ca/mokhan/assignment1/HailstoneSequenceTest.java2
2 files changed, 9 insertions, 8 deletions
diff --git a/assignments/assignment1/src/main/java/ca/mokhan/assignment1/HailstoneSequence.java b/assignments/assignment1/src/main/java/ca/mokhan/assignment1/HailstoneSequence.java
index a67acfd..b0e3c48 100644
--- a/assignments/assignment1/src/main/java/ca/mokhan/assignment1/HailstoneSequence.java
+++ b/assignments/assignment1/src/main/java/ca/mokhan/assignment1/HailstoneSequence.java
@@ -4,13 +4,14 @@ import java.util.ArrayList;
public class HailstoneSequence {
public static ArrayList<Integer> getHailstoneSequence(int n) {
- ArrayList<Integer> items = new ArrayList<Integer>();
+ return getHailstoneSequence(n, new ArrayList<Integer>());
+ }
+
+ public static ArrayList<Integer> getHailstoneSequence(int n, ArrayList<Integer> items) {
+ items.add(n);
- while (n != 1) {
- items.add(n);
- n = (n % 2 == 0) ? n / 2 : (n * 3) + 1;
- }
- items.add(1);
- return items;
+ if (n == 1) return items;
+ else if (n % 2 == 0) return getHailstoneSequence(n / 2, items);
+ else return getHailstoneSequence((n * 3) + 1, items);
}
}
diff --git a/assignments/assignment1/src/test/java/ca/mokhan/assignment1/HailstoneSequenceTest.java b/assignments/assignment1/src/test/java/ca/mokhan/assignment1/HailstoneSequenceTest.java
index c816f68..6dc1fea 100644
--- a/assignments/assignment1/src/test/java/ca/mokhan/assignment1/HailstoneSequenceTest.java
+++ b/assignments/assignment1/src/test/java/ca/mokhan/assignment1/HailstoneSequenceTest.java
@@ -14,7 +14,7 @@ public class HailstoneSequenceTest extends TestCase {
return new TestSuite(HailstoneSequenceTest.class);
}
- public void testIsRightTriangle() {
+ public void testGetHailstoneSequence() {
ArrayList<Integer> results = HailstoneSequence.getHailstoneSequence(15);
assertTrue(15 == results.get(0));