## Introduction

The greatest common denominator (GCD) of two or more numbers is the largest positive integer that divides those numbers without a remainder.

In this article, we will discuss the how to find GCD in JavaScript using recursion and a NodeJS library.

## Method-1: Use `recursion`

to find gcd in JavaScript

You can use a recursive function to calculate the GCD of two numbers using the Euclidean algorithm. Here is an example of how to do this:

```
function gcd(a, b) {
if (b === 0) {
return a;
} else {
return gcd(b, a % b);
}
}
let theGCD = gcd(12, 18);
console.log(theGCD);
```

Output

```
6
```

In this example, the `gcd`

function is a recursive function that uses the Euclidean algorithm to find the GCD of two numbers. The function takes two numbers as its arguments, and it uses a `if`

statement to check if the second number (b) is equal to 0. If it is, the function returns the first number (a) as the result, because the GCD of a number and 0 is always the first number.

If the second number is not equal to 0, the function calls itself recursively, passing the second number as the first argument and the result of the modulo operation (a % b) as the second argument. This continues until the second number is equal to 0, at which point the recursive calls unwind and the GCD is returned.

In the example, the `gcd`

function is called with the numbers 12 and 18 as its arguments. The function calculates the GCD of those numbers using the Euclidean algorithm and returns the integer `6`

as the result. The result is then logged to the console.

In addition to using a recursive function like this one, you can also use a loop to calculate the GCD of two or more numbers. For example:

```
function gcd(numbers) {
let result = numbers[0];
for (let i = 1; i < numbers.length; i++) {
result = gcdTwoNumbers(result, numbers[i]);
}
return result;
}
function gcdTwoNumbers(a, b) {
while (b !== 0) {
let temp = b;
b = a % b;
a = temp;
}
return a;
}
let theGCD = gcd([12, 18, 24]);
console.log(theGCD); // 6
```

Output

```
6
```

In this example, the `gcd`

function uses a loop to iteratively calculate the GCD of two or more numbers. The function takes an array of numbers as its argument, and it uses a `for`

loop to iterate over the array. For each iteration of the loop, the function calls the `gcdTwoNumbers`

helper function, passing the current result and the current array element as the arguments. The `gcdTwoNumbers`

function uses a `while`

loop to calculate the GCD of the two numbers using the Euclidean algorithm.

In the example, the `gcd`

function is called with an array containing the numbers 12, 18, and 24 as its argument. The function calculates the GCD of those numbers by iteratively calling the `gcdTwoNumbers`

function for each number in the array. The GCD of the numbers is calculated using the Euclidean algorithm and returned as the result of the `gcd`

function. The result is then logged to the console.

## Method-2: Use `mathjs`

library to find gcd in JavaScript

If you have NodeJS, you can use the `gcd`

method of the mathjs library to find the GCD of two or more numbers.

To use the `gcd`

method, you first need to install the `mathjs`

library by running the following command:

```
npm install mathjs
```

Once the library is installed, you can import it into your JavaScript code and use the `gcd`

method as follows:

```
let math = require("mathjs");
let gcd = math.gcd(12, 18, 24);
console.log(gcd);
```

Output

```
6
```

In this example, the `math.gcd`

method is used to find the GCD of the numbers 12, 18, and 24. The method is called with these numbers as its arguments, and it returns the integer `6`

as the result. This is the largest positive integer that divides all of the input numbers without a remainder, so it is the GCD of those numbers. The result is then logged to the console.

## Summary

There are several ways to find the GCD of two or more numbers in JavaScript. You can use the `gcd`

method of the `mathjs`

library, you can use a recursive function, or you can use a loop. Each approach has its own advantages and disadvantages, so it is up to you to decide which approach is best for your specific needs.