Java 使用递归查找数组是否对称

Java 使用递归查找数组是否对称,java,arrays,recursion,Java,Arrays,Recursion,基本上,我在大学里做过关于递归的工作,但我在解决这个问题上遇到了问题。我必须创建两个方法,一个叫做getLastElement和isSymmetric。getLastElement只能从数组访问索引0。如果数组对称或为0,则isSymmetric必须打印true。 它必须使用数组[0]和array.length。它还可以使用Arrays.copyOfRange() 我已经做了isSymmetric,但是没有getLastElement,我想我遗漏了一些东西,因为我不知道如何将getLastEle

基本上,我在大学里做过关于递归的工作,但我在解决这个问题上遇到了问题。我必须创建两个方法,一个叫做getLastElement和isSymmetric。getLastElement只能从数组访问索引0。如果数组对称或为0,则isSymmetric必须打印true。 它必须使用数组[0]和array.length。它还可以使用Arrays.copyOfRange()

我已经做了isSymmetric,但是没有getLastElement,我想我遗漏了一些东西,因为我不知道如何将getLastElement合并到它中。我知道我没有使用数组[0],但我无法让代码使用它

这是我的密码:

public static int isSymmetric(int array[], int begin, int end) 
    { 

        if (begin >= end) { 
            return 1; 
        } 
        if (array[begin] == array[end]) { 
            return isSymmetric(array, begin + 1, end - 1); 
        } 
        else { 
            return 0; 
        } 
    } 


        public static void main (String[] args) { 
        int array[] = { 1, 2, 3, 2, 1 }; 

        if (isSymmetric(array, 0, array.length - 1) == 1) 
            System.out.print( "true"); 
        else
            System.out.println( "false"); 
        } 

我只想像现在一样打印,但将getLastElement合并到isSymmetric中。

您可以在这两个索引之间使用数组的一个副本,而不是将整个数组连同索引
begin
end一起发送。这样做将允许您使用
getLastElement
函数(请参见代码)

//我假设此函数返回
//数组的第0个索引元素。
公共静态int getLastElement(int[]数组){
返回数组[0];
}
公共静态int是对称的(int[]数组){

如果(array.length你能详细解释一下你的
getLastElement
函数吗?它说它只限于访问索引0元素。这是我老师给我的pdf上唯一的内容。对不起,如果你听不懂,我用我的语言翻译了它,它可能失去了一些意义。可能是重复的吗?我想这个人n询问此问题时,您希望在函数
issymmetry()中创建一个新数组
包含输入数组中除第一个和最后一个元素以外的所有元素。而您要做的是传递整个数组,并告诉函数从何处开始和从何处结束。还有一件事。我该如何打印它?它给了我一个错误。抱歉,打扰了,我只是累了。您想打印什么?如果是Symmetric print true。如果不是print false。我已经更新了答案,希望这有帮助。我想你可能向
isSymmetric
函数发送了额外的参数。刚刚看到编辑。非常感谢你的回答。祝你愉快!
// I am assuming this function returns the 
// 0th-indexed element of the array.
public static int getLastElement(int[] array) {
    return array[0];    
}

public static int isSymmetric(int[] array) {
    if(array.length <= 1) return 1;

    // check if the first and the last element are equal
    if(getLastElement(array) == array[array.length -1])

        // copy the remaining array (leaving first and last element)
        return isSymmetric(Arrays.copyOfRange(array, 1, array.length-1));

    return 0;
}


public static void main (String[] args) { 
    int array[] = { 1, 2, 3, 2, 1 }; 

    if (isSymmetric(array) == 1) 
        System.out.println( "true"); 
    else
        System.out.println( "false"); 
}