Write a recursive function in C to check palindrome number. How to check whether a number is palindrome or not using recursion in C program. Logic to check palindrome number using recursion in C programming.
Example
Input
Input number: 121
Output
121 is palindrome
Required knowledge
Basic C programming, If else, Functions, Recursion
Declare recursive function to check palindrome
Before we check palindrome numbers using functions, let us first define our function.
- First give a meaningful name to our function, say
isPalindrome()
. Along with this declare and define another function to find reverse of number, sayint reverse(int num);
. - Next, the
isPalindrome()
function takes an integer to find reverse as input. Therefore, pass an integer value to the function i.e.isPalindrome(int num);
. - Finally function must return boolean
true
orfalse
value based on palindrome condition. In C we represent boolean values with 1 or 0. Hence the function must return an integer.
Considering the above points function declaration to check palindrome number is – int isPalindrome(int num);
.
Logic to check palindrome number using recursion
We know that to check a palindrome number we first need to reverse the number then check whether the given number is equal to its reverse or not. If the given number is equal to its reverse then the number is palindrome otherwise not. In my previous post I explained how to find reverse of a number recursively. Here we will use the same recursive approach to find reverse and then will compare the reversed number with original number.
Program to check palindrome number using recursion
/**
* C program to check palindrome number using recursion
*/
#include <stdio.h>
#include <math.h>
/* Function declarations */
int reverse(int num);
int isPalindrome(int num);
int main()
{
int num;
/* Input any number from user */
printf("Enter any number: ");
scanf("%d", &num);
if(isPalindrome(num) == 1)
{
printf("%d is palindrome number.\n", num);
}
else
{
printf("%d is NOT palindrome number.\n", num);
}
return 0;
}
/**
* Function to check whether a number is palindrome or not.
* This function returns 1 if the number is palindrome otherwise 0.
*/
int isPalindrome(int num)
{
/*
* Check if the given number is equal to
* its reverse.
*/
if(num == reverse(num))
{
return 1;
}
return 0;
}
/**
* Recursive function to find reverse of any number
*/
int reverse(int num)
{
/* Find number of digits in num */
int digit = (int)log10(num);
/* Recursion base condition */
if(num == 0)
return 0;
return ((num%10 * pow(10, digit)) + reverse(num/10));
}
Output
Enter any number: 1221 1221 is palindrome number.
Happy coding 😉
Recommended posts
- Function and recursion programming exercise index.
- C program to find sum of digits of a number using recursion.
- C program to find factorial of a number using recursion.
- C program to generate nth Fibonacci sequence using recursion.
- C program to calculate HCF using recursion.
- C program to calculate LCM using recursion.