mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-07-08 18:32:56 +08:00
Using Try/catch and recursion
Adding try/catch and recursion to optimize the code
This commit is contained in:
@ -16,13 +16,16 @@ public class Factorial {
|
||||
* @return the factorial of {@code n}
|
||||
*/
|
||||
public static long factorial(int n) {
|
||||
if (n < 0) {
|
||||
throw new ArithmeticException("n < 0"); //Dont work with less than 0
|
||||
}
|
||||
long fac = 1;
|
||||
for (int i = 1; i <= n; ++i) {
|
||||
fac *= i;
|
||||
}
|
||||
return fac; //Return factorial
|
||||
// Using recursion
|
||||
try {
|
||||
if (n == 0) {
|
||||
return 1; // if n = 0, return factorial of n;
|
||||
}else {
|
||||
return n*factorial(n-1); // While N is greater than 0, call the function again, passing n-1 (Principle of factoring);
|
||||
}
|
||||
}catch (ArithmeticException e) {
|
||||
System.out.println("Dont work with less than 0");
|
||||
}
|
||||
return n;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user