📌  相关文章
📜  程序使用递归检查数组是否是回文

📅  最后修改于: 2021-04-23 18:05:15             🧑  作者: Mango

给定一个数组。任务是使用递归确定数组是否是回文。
例子:

Input: arr[] = {3, 6, 0, 6, 3}
Output: Palindrome

Input: arr[] = {1, 2, 3, 4, 5}
Output: Not Palindrome

方法:

  1. 基本情况:如果数组只有一个元素,即begin == end,则返回1,如果begin> end表示数组是回文,则也返回1。
  2. 如果第一个和最后一个元素相等,则再次递归调用该函数,但增量从1开始,减量从1结束。
  3. 如果第一个和最后一个元素不相等,则返回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