# Recursive program to check if number is palindrome or not

Last Updated : 05 Sep, 2022

Given a number, the task is to write a recursive function that checks if the given number is a palindrome or not.

Examples:

Input: 121
Output: yes

Input: 532
Output: no

The approach for writing the function is to call the function recursively till the number is wholly traversed from the back. Use a temp variable to store the reverse of the number according to the formula obtained in this post. Pass the temp variable in the parameter and once the base case of n==0 is achieved, return temp which stores the reverse of a number.
Below is the implementation of the above approach:

## C++

 `// Recursive C++ program to check if the` `// number is palindrome or not` `#include ` `using` `namespace` `std;`   `// recursive function that returns the reverse of digits` `int` `rev(``int` `n, ``int` `temp)` `{` `    ``// base case` `    ``if` `(n == 0)` `        ``return` `temp;`   `    ``// stores the reverse of a number` `    ``temp = (temp * 10) + (n % 10);`   `    ``return` `rev(n / 10, temp);` `}`   `// Driver Code` `int` `main()` `{`   `    ``int` `n = 121;` `    `  `    ``int` `temp = rev(n, 0);` `  `  `    ``if` `(temp == n)` `        ``cout << ``"yes"` `<< endl;` `    ``else` `        ``cout << ``"no"` `<< endl;` `    ``return` `0;` `}`

## Java

 `// Recursive Java program to ` `// check if the number is ` `// palindrome or not` `import` `java.io.*;`   `class` `GFG` `{`   `// recursive function that ` `// returns the reverse of digits` `static` `int` `rev(``int` `n, ``int` `temp)` `{` `    ``// base case` `    ``if` `(n == ``0``)` `        ``return` `temp;`   `    ``// stores the reverse` `    ``// of a number` `    ``temp = (temp * ``10``) + (n % ``10``);`   `    ``return` `rev(n / ``10``, temp);` `}`   `// Driver Code` `public` `static` `void` `main (String[] args) ` `{` `    ``int` `n = ``121``;` `    ``int` `temp = rev(n, ``0``);` `    `  `    ``if` `(temp == n)` `        ``System.out.println(``"yes"``);` `    ``else` `        ``System.out.println(``"no"` `);` `}` `}`   `// This code is contributed by anuj_67.`

## Python3

 `# Recursive Python3 program to check ` `# if the number is palindrome or not `   `# Recursive function that returns` `# the reverse of digits ` `def` `rev(n, temp): `   `    ``# base case ` `    ``if` `(n ``=``=` `0``): ` `        ``return` `temp; `   `    ``# stores the reverse of a number ` `    ``temp ``=` `(temp ``*` `10``) ``+` `(n ``%` `10``); `   `    ``return` `rev(n ``/``/` `10``, temp); `   `# Driver Code ` `n ``=` `121``; ` `temp ``=` `rev(n, ``0``); `   `if` `(temp ``=``=` `n): ` `    ``print``(``"yes"``)` `else``:` `    ``print``(``"no"``)`   `# This code is contributed ` `# by mits`

## C#

 `// Recursive C# program to ` `// check if the number is ` `// palindrome or not` `using` `System;`   `class` `GFG` `{`   `// recursive function ` `// that returns the` `// reverse of digits` `static` `int` `rev(``int` `n, ` `               ``int` `temp)` `{` `    ``// base case` `    ``if` `(n == 0)` `        ``return` `temp;`   `    ``// stores the reverse` `    ``// of a number` `    ``temp = (temp * 10) +` `               ``(n % 10);`   `    ``return` `rev(n / 10, temp);` `}`   `// Driver Code` `public` `static` `void` `Main () ` `{` `    ``int` `n = 121;` `    ``int` `temp = rev(n, 0);` `    `  `    ``if` `(temp == n)` `        ``Console.WriteLine(``"yes"``);` `    ``else` `        ``Console.WriteLine(``"no"` `);` `}` `}`   `// This code is contributed` `// by anuj_67.`

## PHP

 ``

## Javascript

 ``

Output:

`yes`

Time complexity: O(log10N), as we require digits in the given number N.
Auxiliary space: O(log10N), for using recursive stack space.

Previous
Next