我是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
對不起,我的壞名單已經排序了。 –