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

时间:2016-02-28 19:58:23

标签: 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[0]==f[0]) && Recursivo6(e, f, t-1)){
            return true;
        }

    }
    return false;

}

但是在方法recursivo中,第一个条件不起作用,它总是抛弃我的假,你能帮助我吗?感谢。

2 个答案:

答案 0 :(得分:1)

它返回false,因为条件是(t == 0),而t是数组的长度,所以它总是返回false。也许尝试if(t> 0)

答案 1 :(得分: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来调用它。

你的错误:

  • 除非if作为初始false
  • ,否则0始终为t
  • 您应该评估t'元素而不是0'