给定一个数组。任务是使用递归确定数组是否是回文。
例子:
Input: arr[] = {3, 6, 0, 6, 3}
Output: Palindrome
Input: arr[] = {1, 2, 3, 4, 5}
Output: Not Palindrome
方法:
- 基本情况:如果数组只有一个元素,即begin == end,则返回1,如果begin> end表示数组是回文,则也返回1。
- 如果第一个和最后一个元素相等,则再次递归调用该函数,但增量从1开始,减量从1结束。
- 如果第一个和最后一个元素不相等,则返回0。
下面是上述方法的实现:
C++
// C++ implementation of above approach
#include
using namespace std;
// Recursive function that returns 1 if
// palindrome, 0 if not palindrome
int palindrome(int arr[], int begin, int end)
{
// base case
if (begin >= end) {
return 1;
}
if (arr[begin] == arr[end]) {
return palindrome(arr, begin + 1, end - 1);
}
else {
return 0;
}
}
// Driver code
int main()
{
int a[] = { 3, 6, 0, 6, 3 };
int n = sizeof(a) / sizeof(a[0]);
if (palindrome(a, 0, n - 1) == 1)
cout << "Palindrome";
else
cout << "Not Palindrome";
return 0;
}
Java
// Java implementation of above approach
import java.io.*;
class GFG {
// Recursive function that returns 1 if
// palindrome, 0 if not palindrome
static int palindrome(int arr[], int begin, int end)
{
// base case
if (begin >= end) {
return 1;
}
if (arr[begin] == arr[end]) {
return palindrome(arr, begin + 1, end - 1);
}
else {
return 0;
}
}
// Driver code
public static void main (String[] args) {
int a[] = { 3, 6, 0, 6, 3 };
int n = a.length;
if (palindrome(a, 0, n - 1) == 1)
System.out.print( "Palindrome");
else
System.out.println( "Not Palindrome");
}
}
Python 3
# Python 3 implementation of above approach
# Recursive function that returns 1 if
# palindrome, 0 if not palindrome
def palindrome(arr, begin, end):
# base case
if (begin >= end) :
return 1
if (arr[begin] == arr[end]) :
return palindrome(arr, begin + 1,
end - 1)
else :
return 0
# Driver code
if __name__ == "__main__":
a = [ 3, 6, 0, 6, 3 ]
n = len(a)
if (palindrome(a, 0, n - 1) == 1):
print("Palindrome")
else:
print("Not Palindrome")
# This code is contributed
# by ChitraNayal
C#
// C# implementation of above approach
using System;
class GFG
{
// Recursive function that returns 1
// if palindrome, 0 if not palindrome
static int palindrome(int []arr,
int begin, int end)
{
// base case
if (begin >= end)
{
return 1;
}
if (arr[begin] == arr[end])
{
return palindrome(arr, begin + 1,
end - 1);
}
else
{
return 0;
}
}
// Driver code
public static void Main ()
{
int []a = { 3, 6, 0, 6, 3 };
int n = a.Length;
if (palindrome(a, 0, n - 1) == 1)
Console.WriteLine("Palindrome");
else
Console.WriteLine("Not Palindrome");
}
}
// This code is contributed by inder_verma
PHP
= $end)
{
return 1;
}
if ($arr[$begin] == $arr[$end])
{
return palindrome($arr, $begin + 1,
$end - 1);
}
else
{
return 0;
}
}
// Driver code
$a = array( 3, 6, 0, 6, 3 );
$n = count($a);
if (palindrome($a, 0, $n - 1) == 1)
echo "Palindrome";
else
echo "Not Palindrome";
// This code is contributed
// by inder_verma
?>
Javascript
输出:
Palindrome