Commit 15cf738

mokha <mokha@cisco.com>
2019-05-05 20:21:38
switch from iterative to recursive solution
1 parent 3be9177
Changed files (2)
assignments
assignment1
src
main
java
ca
mokhan
test
java
ca
mokhan
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);
   }
 }
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));