Given two integers **N **and **M**, the task is to find their LCM using recursion.

**Examples:**

Input:N = 2, M = 4Output:4Explanation:LCM of 2, 4 is 4.

Input:N = 3, M = 5Output:15Explanation:LCM of 3, 5 is 15.

**Approach:** The idea is to use the basic elementary method of finding LCM of two numbers. Follow the steps below to solve the problem:

- Define a recursive function
**LCM()**with**3**integer parameters**N, M,**and**K**to find LCM of**N**and**M**. - The following base conditions need to be considered:
- If
**N**or**M**is equal to**1**, return**N * M**. - If
**N**is equal to**M**, return**N**.

- If
**If K < min(N, M):**- If
**K**divides both**N**and**M**, return**K * LCM(N/K, M/K, 2)**. - Otherwise, increment
**K**by**1**and return**LCM(N, M, K+1).**

- If
- Otherwise, return the product of
**N**and**M**. - Finally, print the result of the recursive function as the required LCM.
Below is the implementation of the above approach:

## C

`// C program for the above approach`

`#include <stdio.h>`

`// Function to return the`

`// minimum of two numbers`

`int`

`Min(`

`int`

`Num1,`

`int`

`Num2)`

`{`

`return`

`Num1 >= Num2`

`? Num2`

`: Num1;`

`}`

`// Utility function to calculate LCM`

`// of two numbers using recursion`

`int`

`LCMUtil(`

`int`

`Num1,`

`int`

`Num2,`

`int`

`K)`

`{`

`// If either of the two numbers`

`// is 1, return their product`

`if`

`(Num1 == 1 || Num2 == 1)`

`return`

`Num1 * Num2;`

`// If both the numbers are equal`

`if`

`(Num1 == Num2)`

`return`

`Num1;`

`// If K is smaller than the`

`// minimum of the two numbers`

`if`

`(K <= Min(Num1, Num2)) {`

`// Checks if both numbers are`

`// divisible by K or not`

`if`

`(Num1 % K == 0 && Num2 % K == 0) {`

`// Recursively call LCM() function`

`return`

`K * LCMUtil(`

`Num1 / K, Num2 / K, 2);`

`}`

`// Otherwise`

`else`

`return`

`LCMUtil(Num1, Num2, K + 1);`

`}`

`// If K exceeds minimum`

`else`

`return`

`Num1 * Num2;`

`}`

`// Function to calculate LCM`

`// of two numbers`

`void`

`LCM(`

`int`

`N,`

`int`

`M)`

`{`

`// Stores LCM of two number`

`int`

`lcm = LCMUtil(N, M, 2);`

`// Print LCM`

`printf`

`(`

`"%d"`

`, lcm);`

`}`

`// Driver Code`

`int`

`main()`

`{`

`// Given N & M`

`int`

`N = 2, M = 4;`

`// Function Call`

`LCM(N, M);`

`return`

`0;`

`}`

**Output:**4

**Time Complexity:**O(max(N, M))**Auxiliary Space:**O(1)Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the

**Essential Maths for CP Course**at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more, please refer**Complete Interview Preparation Course****.**