# Recursive function to check if a string is palindrome

Given a string, write a recursive function that check if the given string is palindrome, else not palindrome.

Examples:

```Input : malayalam
Output : Yes
Reverse of malayalam is also
malayalam.

Input : max
Output : No
Reverse of max is not max.
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

We have discussed an iterative function here.

The idea of recursive function is simple :

```1) If there is only one character in string
return true.
2) Else compare first and last characters
and recur for remaining substring.
```

Below is the implementation of above steps.

## C

```// A recursive C program to check whether
// a given number is palindrome or not
#include <stdio.h>
#include <string.h>
#include <stdbool.h>

// A recursive function that check a str[s..e]
// is palindrome or not.
bool isPalRec(char str[], int s, int e)
{
// If there is only one character
if (s == e)
return true;

// If first and last characters do not match
if (str[s] != str[e])
return false;

// If there are more than two characters,
// check if middle substring is also
// palindrome or not.
if (s < e+1)
return isPalRec(str, s+1, e-1);

return true;
}

bool isPalindrome(char str[])
{
int n = strlen(str);

// An empty string is considered as
// palindrome
if (n == 0)
return true;

return isPalRec(str, 0, n-1);
}

// Main Function
int main()
{
char str[] = "geeg";

if (isPalindrome(str))
printf("Yes");
else
printf("No");

return 0;
}
```

## Java

```// A recursive JAVA program to check whether
// a given String is palindrome or not
import java.io.*;

class GFG
{
// A recursive function that check a str(s..e)
// is palindrome or not.
static boolean isPalRec(String str, int s, int e)
{
// If there is only one character
if (s == e)
return true;

// If first and last characters do not match
if ((str.charAt(s)) != (str.charAt(e)))
return false;

// If there are more than two characters,
// check if middle substring is also
// palindrome or not.
if (s < e+1)
return isPalRec(str, s+1, e-1);

return true;
}

static boolean isPalindrome(String str)
{
int n = str.length();

// An empty string is considered as
// palindrome
if (n == 0)
return true;

return isPalRec(str, 0, n-1);
}

// Main Function
public static void main(String args[])
{
String str = "geeg";

if (isPalindrome(str))
System.out.println("Yes");
else
System.out.println("No");
}
}

// This code is contributed by Nikita Tiwari
```

## Python

```# A recursive Python program to check whether
# a given number is palindrome or not

# A recursive function that check a str[s..e]
# is palindrome or not.
def isPalRec(st, s, e) :

# If there is only one character
if (s == e):
return True

# If first and last characters do not match
if (st[s] != st[e]) :
return False

# If there are more than two characters,
# check if middle substring is also
# palindrome or not.
if (s < e+1) :
return isPalRec(st, s+1, e-1);

return True

def isPalindrome(st) :
n = len(st)

# An empty string is considered as
# palindrome
if (n == 0) :
return True

return isPalRec(st, 0, n-1);

# Main Function
st = "geeg"
if (isPalindrome(st)) :
print "Yes"
else :
print "No"

# This code is contributed by Nikita Tiwari.
```

Output:

```Yes
```

This article is contributed by Sahil Rajput. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

# GATE CS Corner    Company Wise Coding Practice

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.
2.6 Average Difficulty : 2.6/5.0
Based on 18 vote(s)