Calculate Factorial

console.log("Factorial");

const arr = [1, 2, 3, 4, 5];

// Using reduce method without function
const factorial = arr.reduce((acc, x) => acc * x, 1);
// console.log(factorial);

// OR
// Using reduce method with function call
function getFacto(acc, x) {
  return acc * x;
}

const factorial1 = arr.reduce(getFacto);
// console.log(factorial1);

// OR
// Using for loop
let factorial2 = 1;
const n = 5;

for (let i = 1; i <= n; i++) {
  factorial2 *= i;
}

// console.log(factorial2);

// -------------------------
// Time to Advanced
// Using reduce method
function getFacto2(num) {
  if (baseFactocondition(num)) {
    let initializeArr = Array.from(Array(num + 1).keys());
    let arr1 = initializeArr.slice(1).reduce((a, b) => a * b);
    return arr1;
  }
  else {
    return 1;
  }
}

// check if number is = to 0 or 1 
function baseFactocondition(num) {
  if (num == 0 || num == 1) {
    return false;
  }
}

console.log(getFacto2(0));

// Using for loop
let factorial3 = 1;
function factoUsingForLoop(num) {
  if (baseFactocondition(num)) {
    for (let i = 1; i <= num; i++) {
      factorial3 *= i;
    }
  }
  else {
    return 1;
  }
  return factorial3;

}

console.log(factoUsingForLoop(1));

Chat GPT:

console.log("Factorial Calculation");

// Factorial using reduce method
const arr = [1, 2, 3, 4, 5];
const factorialUsingReduce = arr.reduce((acc, x) => acc * x, 1);
console.log(factorialUsingReduce); // Output: 120

// Factorial using a separate function with reduce
function calculateFactorial(arr) {
  return arr.reduce((acc, x) => acc * x, 1);
}
console.log(calculateFactorial([1, 2, 3, 4, 5])); // Output: 120

// Factorial using for loop
function factorialUsingForLoop(n) {
  let factorial = 1;
  for (let i = 1; i <= n; i++) {
    factorial *= i;
  }
  return factorial;
}
console.log(factorialUsingForLoop(5)); // Output: 120

// Advanced: Factorial using reduce and dynamic array generation
function factorial(num) {
  if (num <= 1) return 1; // Handles base cases for 0 and 1
  return Array.from({ length: num }, (_, i) => i + 1).reduce((acc, x) => acc * x, 1);
}
console.log(factorial(5)); // Output: 120
console.log(factorial(0)); // Output: 1

// Advanced: Factorial using for loop with base condition
function factorialWithBaseCheck(num) {
  if (num <= 1) return 1; // Base case for 0 and 1
  let result = 1;
  for (let i = 2; i <= num; i++) {
    result *= i;
  }
  return result;
}
console.log(factorialWithBaseCheck(5)); // Output: 120
console.log(factorialWithBaseCheck(1)); // Output: 1


Post a Comment

0 Comments