diff --git a/src/main/java/io/zipcoder/Problem2.java b/src/main/java/io/zipcoder/Problem2.java index e0af6a0..0327983 100644 --- a/src/main/java/io/zipcoder/Problem2.java +++ b/src/main/java/io/zipcoder/Problem2.java @@ -1,4 +1,49 @@ package io.zipcoder; +import java.util.ArrayList; +import java.util.LinkedList; + public class Problem2 { + + public String fibonacciIteration(int n){ + int currentInt = 0; + LinkedList integers = new LinkedList(); + integers.add(0); + integers.add(1); + StringBuilder sb = new StringBuilder(); + sb.append("0, 1"); + for(int i = 2; integers.get(i-1)+integers.get(i-2) < n; i++){ + currentInt = integers.get(i-1)+integers.get(i-2); + integers.add(currentInt); + sb.append(", "+currentInt); + } + return sb.toString(); + } + + public ArrayList fibonacciRecursion(int max){ + ArrayList fibs = new ArrayList(); + fibs.add(0); + fibs.add(1); + return fibonacciRecursion(fibs, max); + } + + private ArrayList fibonacciRecursion(ArrayList fibs, int max){ + int nextFib = fibs.get(fibs.size()-1) + fibs.get(fibs.size() - 2); + if(nextFib > max){ + return fibs; + } + fibs.add(nextFib); + return fibonacciRecursion(fibs, max); + } + + public String printFibonacciRecursion(ArrayList fibs){ + if(fibs.size() == 1){ + return "" + fibs.get(0); + } else { + String output = fibs.get(0) + ", "; + fibs.remove(0); + return output + printFibonacciRecursion(fibs); + } + } + } diff --git a/src/test/java/io/zipcoder/Problem2Test.java b/src/test/java/io/zipcoder/Problem2Test.java index fa9ffa5..c90f3be 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(){ + Problem2 problem2 = new Problem2(); + + String expected = "0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144"; + String actual = problem2.fibonacciIteration(150); + + Assert.assertEquals(expected, actual); + } + + + @Test + public void printFibonacciRecursionTest(){ + Problem2 problem2 = new Problem2(); + + String expected = "0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144"; + String actual = problem2.printFibonacciRecursion(problem2.fibonacciRecursion(150)); + + Assert.assertEquals(expected, actual); + } + + }