public/subjects/java/checkpoints/factorial-master
amin ae40b4e64d test: formatting 2024-07-10 15:04:42 +01:00
..
ExerciseRunner.java docs: adding subject and main 2024-07-10 15:04:42 +01:00
README.md test: formatting 2024-07-10 15:04:42 +01:00

README.md

Factorial Master

Instructions

Create an abstract class Factorial that will serve as the base class for calculating the factorial of a number. This class should have an abstract method calculate that will be implemented by its child classes.

Implement two child classes:

  • IterativeFactorial which implements the factorial calculation using an iterative approach.
  • RecursiveFactorial which implements the factorial calculation using a recursive approach.

Note: The factorial of 0 is 1, according to the convention

Formula for factorial calculation:

n! = n × (n1) × (n2) ×× 1

And an example: 5! = 5 × 4 × 3 × 2 × 1 = 120

Expected Abstract Class

public abstract class Factorial {
    public abstract long calculate(int n);
}

public class IterativeFactorial extends Factorial {
    @Override
    public long calculate(int n) {
        // iterative factorial calculation
    }
}

public class RecursiveFactorial extends Factorial {
    @Override
    public long calculate(int n) {
        // recursive factorial calculation
    }
}

Usage

Here is a possible ExerciseRunner.java to test your classes:

public class ExerciseRunner {
    public static void main(String[] args) {
        Factorial iterativeFactorial = new IterativeFactorial();
        Factorial recursiveFactorial = new RecursiveFactorial();

        // Test iterative factorial
        int number = 5;
        long iterativeResult = iterativeFactorial.calculate(number);
        System.out.println("Iterative Factorial of " + number + " is: " + iterativeResult); // Expected output: 120

        // Test recursive factorial
        long recursiveResult = recursiveFactorial.calculate(number);
        System.out.println("Recursive Factorial of " + number + " is: " + recursiveResult); // Expected output: 120
    }
}

Expected Output

$ javac *.java -d build
$ java -cp build ExerciseRunner
Iterative Factorial of 5 is: 120
Recursive Factorial of 5 is: 120
$