diff --git a/src/main/java/io/zipcoder/Problem2.java b/src/main/java/io/zipcoder/Problem2.java index e0af6a0..765e450 100644 --- a/src/main/java/io/zipcoder/Problem2.java +++ b/src/main/java/io/zipcoder/Problem2.java @@ -1,4 +1,72 @@ package io.zipcoder; +import java.util.ArrayList; +import java.util.Map; + public class Problem2 { + + ArrayList fibNums; + + public Problem2() { + this.fibNums = new ArrayList(); + } + + /** + * Use iteration to produce fibonnaci series and return in string format + * @param n upperBound for fibonnaci series + * @return the Fibonacci series as a string up to the value of n + */ + // public String fibonacciIteration(int n) { +// ArrayList fibNums = new ArrayList(); +// int firstNum = 0; +// int secondNum = 1; +// +// while (true) { +// if (firstNum < n) { +// fibNums.add(firstNum); +// firstNum += secondNum; +// secondNum = firstNum - secondNum; +// } else { +// break; +// } +// } +// return fibNums.toString().replace("[", "").replace("]", ""); +// } + + public void fibonacciIteration(int n) { + int firstNum = 0; + int secondNum = 1; + + while (true) { + if (firstNum < n) { + fibNums.add(firstNum); + firstNum += secondNum; + secondNum = firstNum - secondNum; + } else { + break; + } + } + } + + + /** + * Use recursion to produce fibonnaci series and return in string format + * @param n upperBound for fibonnaci series + * @return the Fibonacci series as a string up to the value of n + */ + public int fibonacciRecursion(int n) { +//I need a statment that will close the loop. + fibNums.add(n); + return fibonacciRecursion(n - 1) + fibonacciRecursion(n - 2); + } + + @Override + public String toString(){ + return fibNums.toString().replace("[", "").replace("]", ""); + } } + + + + + diff --git a/src/test/java/io/zipcoder/Problem2Test.java b/src/test/java/io/zipcoder/Problem2Test.java index fa9ffa5..22b51a0 100644 --- a/src/test/java/io/zipcoder/Problem2Test.java +++ b/src/test/java/io/zipcoder/Problem2Test.java @@ -1,4 +1,38 @@ package io.zipcoder; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + public class Problem2Test { + + Problem2 testProb; + + @Before + public void setup(){ + testProb = new Problem2(); + } + + @Test + public void testFibonacciIteration(){ + int n = 150; + String expectedOutput = "0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144"; + testProb.fibonacciIteration(n); + String actualOutput = testProb.toString(); + Assert.assertEquals(expectedOutput, actualOutput); + } + + + @Test + public void testFibonacciRecursion(){ + int n = 150; + String expectedOutput = "0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144"; + testProb.fibonacciRecursion(n); + String actualOutput = testProb.toString(); + Assert.assertEquals(expectedOutput, actualOutput); + } } + + + +