Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CON-2730 Markdown Factorial Master Exercise #2602

Merged
merged 2 commits into from
Jul 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions subjects/java/checkpoints/factorial-master/ExerciseRunner.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
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
}
}
73 changes: 73 additions & 0 deletions subjects/java/checkpoints/factorial-master/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
## 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](https://www.chilimath.com/lessons/intermediate-algebra/zero-factorial/)

#### Formula for factorial calculation:

n! = n × (n−1) × (n−2) × … × 1

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

### Expected Abstract Class

```java
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:

```java
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

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