# 算法：递归函数检查字符串是否是回文

2021年3月11日16:59:43 发表评论 369 次浏览

## 本文概述

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

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

## 推荐：请尝试使用{IDE}首先, 在继续解决方案之前。

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

## C ++

``````// A recursive C++ program to
// check whether a given number
// is palindrome or not
#include <bits/stdc++.h>
using namespace std;

// A recursive function that
// check a str展开 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展开 != 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);
}

// Driver Code
int main()
{
char str[] = "geeg" ;

if (isPalindrome(str))
cout << "Yes" ;
else
cout << "No" ;

return 0;
}

// This code is contributed by shivanisinghss2110``````

## 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展开 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展开 != 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);
}

// Driver Code
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 );
}

// Driver Code
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展开 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展开 ! = 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 );

# Driver Code
st = "geeg"
if (isPalindrome(st)) :
print "Yes"
else :
print "No"

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

## C#

``````// A recursive C# program to
// check whether a given number
// is palindrome or not
using System;

class GFG
{

// A recursive function that
// check a str(s..e)
// is palindrome or not.
static bool isPalRec(String str, int s, int e)
{

// If there is only one character
if (s == e)
return true ;

// If first and last character
// do not match
if ((str展开) != (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 ;
}

static bool 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);
}

// Driver Code
public static void Main()
{
String str = "geeg" ;

if (isPalindrome(str))
Console.Write( "Yes" );
else
Console.Write( "No" );
}
}

// This code is contributed by Nitin Mittal.``````

## 的PHP

``````<?php
// A recursive php program to
// check whether a given number
// is palindrome or not

// A recursive function that
// check a str展开 is
// palindrome or not.
function isPalRec( \$str , \$s , \$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;
}

function isPalindrome( \$str )
{
\$n = strlen ( \$str );

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

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

// Driver Code
{
\$str = "geeg" ;

if (isPalindrome( \$str ))
echo ( "Yes" );
else
echo ( "No" );

return 0;
}

// This code is contributed
// by nitin mittal.
?>``````

``Yes``