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); + + + } }