本文概述
给定一个字符串, 编写一个递归函数, 检查给定的字符串是否为回文, 否则为回文。
例子 :
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
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。