diff --git a/pom.xml b/pom.xml
index 2a6372d..c28525a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,6 +7,18 @@
io.zipcoder
InterviewProblem1
1.0-SNAPSHOT
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 1.7
+ 1.7
+
+
+
+
diff --git a/src/main/java/io/zipcoder/Problem2.java b/src/main/java/io/zipcoder/Problem2.java
index e0af6a0..a8afe5e 100644
--- a/src/main/java/io/zipcoder/Problem2.java
+++ b/src/main/java/io/zipcoder/Problem2.java
@@ -1,4 +1,52 @@
package io.zipcoder;
+import java.util.ArrayList;
+
public class Problem2 {
+
+ private ArrayList fibonacciSequence = new ArrayList<>();
+ private Integer counter = 0;
+
+ public String fibonacciIteration(Integer n) {
+ ArrayList fibSequence = new ArrayList<>();
+ fibSequence.add(0);
+ fibSequence.add(1);
+ Integer lowerIndex = 0;
+ Integer higherIndex = 1;
+ Integer nextFibNumber;
+
+ do {
+ nextFibNumber = fibSequence.get(lowerIndex) + fibSequence.get(higherIndex);
+ if (nextFibNumber > n) {
+ break;
+ }
+ fibSequence.add(nextFibNumber);
+ lowerIndex++;
+ higherIndex++;
+
+ } while(true);
+
+ return fibSequence.toString();
+ }
+
+ public void fibonacciRecursion(Integer n) {
+ if (fibonacciSequence.size() == 0) {
+ fibonacciSequence.add(0);
+ fibonacciSequence.add(1);
+ }
+ Integer indexOfpreviousFibNumber = fibonacciSequence.size() - 2;
+ Integer indexOfcurrentFibNumber = fibonacciSequence.size() - 1;
+ Integer newFibNumber = fibonacciSequence.get(indexOfpreviousFibNumber) + fibonacciSequence.get(indexOfcurrentFibNumber);
+ if (newFibNumber < n) {
+ fibonacciSequence.add(newFibNumber);
+ //System.out.println("We have recursed " + counter + " times");
+ //counter++;
+ fibonacciRecursion(n);
+
+ }
+ }
+
+ public ArrayList getFibonacciSequence() {
+ return fibonacciSequence;
+ }
}
diff --git a/src/test/java/io/zipcoder/Problem2Test.java b/src/test/java/io/zipcoder/Problem2Test.java
index fa9ffa5..3456c00 100644
--- a/src/test/java/io/zipcoder/Problem2Test.java
+++ b/src/test/java/io/zipcoder/Problem2Test.java
@@ -1,4 +1,30 @@
package io.zipcoder;
+import org.junit.Assert;
+import org.junit.Test;
+
public class Problem2Test {
+
+ @Test
+ public void fibonacciIterationTest() {
+ String actual = new Problem2().fibonacciIteration(150);
+ String expected = "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144]";
+
+ Assert.assertEquals(expected, actual);
+
+ }
+
+ @Test
+ public void fibonacciRecursionTest() {
+ Problem2 problem2 = new Problem2();
+ problem2.fibonacciRecursion(150);
+
+ String actual = problem2.getFibonacciSequence().toString();
+
+ String expected = "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144]";
+
+ Assert.assertEquals(expected, actual);
+
+
+ }
}