Write a C program to find LCM of two numbers using recursion. How to find LCM of two numbers in C programming using recursion. Logic to find LCM of two numbers using recursion.

**Example**

**Input**

Input first number: 12 Input second number: 30

**Output**

LCM of 12 and 30 = 60

## Required knowledge

Basic C programming, If else, Functions, Recursion

Must know - Program to find LCM of two numbers using loop

## Logic to find LCM of two numbers using recursion

Finding LCM using iterative method involves three basic steps:

- Initialize
`multiple`variable with the maximum value among two given numbers. - Check whether
`multiple`clearly divides both number or not. If it does, then end the process and return`multiple`as LCM. - If multiple doesn't divides both given numbers then increment
`multiple`by the max values among both given numbers.

Repeat steps 2 to 3 till you find LCM. To convert the above iterative approach of finding LCM into recursive we will use step 2 as our base condition.

## Program to find LCM using recursion

```
/**
* C program to find LCM of two numbers using recursion
*/
#include <stdio.h>
/* Function declaration */
int lcm(int a, int b);
int main()
{
int num1, num2, LCM;
/* Input two numbers from user */
printf("Enter any two numbers to find lcm: ");
scanf("%d%d", &num1, &num2);
/*
* Ensures that first parameter of LCM function
* is always less than second
*/
if(num1 > num2)
LCM = lcm(num2, num1);
else
LCM = lcm(num1, num2);
printf("LCM of %d and %d = %d", num1, num2, LCM);
return 0;
}
/**
* Recursive function to find lcm of two numbers 'a' and 'b'.
* Here 'a' needs to be always less than 'b'.
*/
int lcm(int a, int b)
{
static int multiple = 0;
/* Increments multiple by adding max value to it */
multiple += b;
/*
* Base condition of recursion
* If found a common multiple then return the multiple.
*/
if((multiple % a == 0) && (multiple % b == 0))
{
return multiple;
}
else
{
return lcm(a, b);
}
}
```

**Note:** Since we don't want the variable `multiple` to re-initialize again and again by recursive function calls, therefore I have declared it as `static`

i.e. `static int multiple = 0;`

.

Also you can remove the other condition as it is not necessary. Means you can simply write the if statement as `if(multiple % a == 0)`

. Since the variable `multiple` is always a multiple of `b`.

Output

Enter any two numbers to find lcm: 12 30 LCM of 12 and 30 = 60

Happy coding 😉

### Recommended posts

- Function and recursion programming exercise index.
- C program to find HCF of two numbers using recursion.
- C program to find nth fibonacci term using recursion.
- C program to display all array elements using recursion.
- C program to find sum of array elements using recursion.
- C program to find maximum and minimum in array using recursion.

<pre><code> ----Your Source Code---- </code></pre>