C program to check palindrome number using recursion

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.

  1. First give a meaningful name to our function, say isPalindrome(). Along with this declare and define another function to find reverse of number, say int reverse(int num);.
  2. 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);.
  3. Finally function must return boolean true or false 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 😉

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>