C program to check palindrome number using recursion

Write a recursive function in C programming to check whether a given number is palindrome or not. How to check whether a number is palindrome or not using recursion in C programming. Function to check palindrome number in C programming. Logic to check palindrome number using recursion in C programming.

Example

Input

Input number: 121

Output

121 is palindrome

Required knowledge

Basic C programming, Function, Recursion

Must know - Program to check palindrome number using loop

Declare recursive function to check palindrome

Before we check palindrome numbers using functions, let us first define our function.

  1. First give a meaningful name to the function, say isPalindrome(). Along with this declare and define another function to find int reverse(int num);.

    Read more - Program to find reverse of a number using recursion

  2. Next, the isPalindrome() function takes an integer as input. Therefore, pass an integer value as parameter to the function i.e. isPalindrome(int num);.
  3. Finally the function returns boolean true or false value based on the palindrome condition. In C we represent boolean values either 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 numbers 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 any number recursively. Here we will use the same recursive approach to find reverse and then will compare the result with the original number to check palindrome condition.

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)
{
    //Finds total number of digits
    int digit = (int)log10(num);;
    
    // 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 😉

Write your doubts or suggestion. I will try my best to help. You must escape source code before commenting. To format your source code paste your source code inside
<pre><code> ----Your Source Code---- </code></pre>