使用递归Java检查两个数组是否具有相同的元素

使用递归Java检查两个数组是否具有相同的元素,java,recursion,Java,Recursion,我有以下代码: public static void main(String args[]){ int e[]={1,2,3}; int f[]={1,2,3}; int t=e.length-1; System.out.println(Recursivo6(e,f,t)); } public static boolean Recursivo6(int e[], int f[], int t){ if(t==0) { if((e[

我有以下代码:

public static void main(String args[]){

    int e[]={1,2,3};
    int f[]={1,2,3};
    int t=e.length-1;

    System.out.println(Recursivo6(e,f,t));
}


public static boolean Recursivo6(int e[], int f[], int t){

    if(t==0) {
        if((e[0]==f[0]) && Recursivo6(e, f, t-1)){
            return true;
        }

    }
    return false;

}

但是在方法recursivo中,第一个条件不起作用,它总是使我出错,你能帮我吗?谢谢。

它返回false,因为条件是(t==0),而t是数组的长度,因此它将始终返回false。如果(t>0)

看一看下面的一行,可以尝试一下:

public static boolean Recursivo6(int e[], int f[], int t){
    return ((e[t] == f[t]) && ((t == 0) || (Recursivo6(e, f, t - 1))));
}
它以数组末尾的
t
开始。在每次迭代中,如果数组的元素在相应的索引处不相等,则不会计算
&&
的第二个操作数,因此,这部分性能相当好。
&
的第二个操作数是一个逻辑表达式,如果我们在算法末尾,它的计算结果为
true
,由
t
作为
0
签名。如果
t
达到
0
,将不再调用
Recursivo6
。否则,使用递减的
t
调用它

你的错误:

  • 除非将
    0
    作为初始
    t
    值传递,否则您的
    if
    将始终为
    false
  • 您应该计算
    t
    第个元素,而不是
    0
    第个元素

完全没有缩进是怎么回事?为什么不使用
Arrays.equals()
?如果您从不修改t或数组,那么它总是错误的。