我是Java新手,仍然试图围绕递归进行打包。下面的函数在两个排序列表列表x和列表y之间的第一个交集处返回true。方法的递归实现
public static boolean checkIntersection(List<Integer> x, List<Integer> y) {
int i = 0;
int j = 0;
while (i < x.size() && j < y.size()) {
if (x.get(i).equals(y.get(j))) {
return true;
} else if (x.get(i) < y.get(j)) {
i++;
} else {
j++;
}
}
return false;
}
现在,我一直在尝试使用递归,而不是实现它,我知道应该有一个基本情况是在这种情况下,一个空的列表,然后尝试通过排除在一个元素,以减少列表一段时间,并将其反馈回相同的递归函数,但我无法弄清楚如何检查交集,因为我一遍又一遍地传递列表的其余部分。
public static boolean recursiveChecking(List<Integer> x,List<Integer> y) {
if(x.size() == 0){
return false;
}
else {
return recursiveChecking(x.subList(1, x.size()-1), y);
}
}
任何帮助将不胜感激。谢谢。
这两个整数列表是否有序?如果不是,该功能的第一个版本将不起作用。 – Leon
对不起,我的坏名单已经排序了。 –