Functions Exercises
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.
Required knowledge
Basic C programming, If else,for loop,Functions, Recursion
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
