使用递归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或数组,那么它总是错误的。