diff --git a/03_recursion/java/03_factorial/src/Factorial2.java b/03_recursion/java/03_factorial/src/Factorial2.java new file mode 100644 index 0000000..c9bafcb --- /dev/null +++ b/03_recursion/java/03_factorial/src/Factorial2.java @@ -0,0 +1,21 @@ +public class Factorial2 { + public static void main(String[] args) { + Factorial2 factorial2 = new Factorial2(); + System.out.println("The factorial of 5 is " + factorial2.getFactorial(5)); + } + + public int getFactorial(int number) { + if (isZeroOrOne(number)) { + return 1; + } + + return number * getFactorial(number - 1); + } + + public boolean isZeroOrOne(int number) { + if (number > 1) { + return false; + } + return true; + } +} diff --git a/03_recursion/java/03_factorial/src/Factorial2Test.java b/03_recursion/java/03_factorial/src/Factorial2Test.java new file mode 100644 index 0000000..a5fdd4e --- /dev/null +++ b/03_recursion/java/03_factorial/src/Factorial2Test.java @@ -0,0 +1,20 @@ +import org.junit.Assert; +import org.junit.Test; + +public class Factorial2Test { + @Test + public void testIsZeroOrOne() { + Factorial2 factorial2 = new Factorial2(); + + Assert.assertEquals(true, factorial2.isZeroOrOne(0)); + Assert.assertEquals(true, factorial2.isZeroOrOne(1)); + Assert.assertEquals(false, factorial2.isZeroOrOne(5)); + } + + @Test + public void testFactorial() { + Factorial2 factorial2 = new Factorial2(); + + Assert.assertEquals(120, factorial2.getFactorial(5)); + } +}