mirror of https://github.com/01-edu/public.git
amin
5 months ago
committed by
zanninso
2 changed files with 88 additions and 0 deletions
@ -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
|
||||||
|
} |
||||||
|
} |
@ -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…
Reference in new issue