diff --git a/src/main/java/io/zipcoder/Problem2.java b/src/main/java/io/zipcoder/Problem2.java index e0af6a0..3465b6c 100644 --- a/src/main/java/io/zipcoder/Problem2.java +++ b/src/main/java/io/zipcoder/Problem2.java @@ -1,4 +1,40 @@ package io.zipcoder; public class Problem2 { + + public String fibonacciIteration(Integer n) { + StringBuilder output = new StringBuilder("0"); + Integer previousFibNumber = 0; + Integer currentFibNumber = 1; + + while (currentFibNumber < n) { + output.append(", ").append(currentFibNumber); + + Integer previousTemp = currentFibNumber; + + currentFibNumber = currentFibNumber + previousFibNumber; + previousFibNumber = previousTemp; + + } + + return output.toString(); + } + + public Integer fibonacciRecursionInt(Integer n, Integer currentFibNumber) { + if (currentFibNumber < n) { + if (currentFibNumber == 0) { + return 0; + } + else if (currentFibNumber == 1) { + return 1; + } + else { + return fibonacciRecursionInt(n, currentFibNumber+1) + + fibonacciRecursionInt(n, currentFibNumber+2); + } + } + else { + return fibonacciRecursionInt(n, currentFibNumber); + } + } } diff --git a/src/test/java/io/zipcoder/Problem2Test.java b/src/test/java/io/zipcoder/Problem2Test.java index fa9ffa5..14ae366 100644 --- a/src/test/java/io/zipcoder/Problem2Test.java +++ b/src/test/java/io/zipcoder/Problem2Test.java @@ -1,4 +1,33 @@ package io.zipcoder; +import org.junit.Assert; +import org.junit.Test; + public class Problem2Test { + + @Test + public void fibonacciIterationTest() { + Integer n = 150; + + Problem2 problem2 = new Problem2(); + + String expected = "0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144"; + String actual = problem2.fibonacciIteration(n); + Assert.assertEquals(expected,actual); + } + + @Test + public void fibonacciRecursionTest() { + Integer n = 150; + + Problem2 problem2 = new Problem2(); + String expected = "0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144"; + + Integer currentFibNumber = 0; + + Integer actual = problem2.fibonacciRecursionInt(n, currentFibNumber); + System.out.println(actual); + //Assert.assertEquals(expected,actual); + + } }