我想查找列表中是否存在重复项,并仅使用递归(无循环)返回 true 或 false。因此,如果使用 char 的 ArrayList,[a,b,c,d,e] 应该返回 false。[a,a,b,c,d] 或 [a,b,b,c,c,d] 应该返回 true。我尝试并测试了不同的方法,它适用于某些情况,但不是全部。我改变了我的代码,这就是我现在所拥有的。(最后一个 if 语句有问题)谁能给我一些提示?谢谢。
public static <T> boolean duplicate(List<T> list) throws NullPointerException {
return duplicateHelper(list, list.get(0));
}
public static <T> boolean duplicateHelper(List<T> list, T t){
if (list == null)
throw new NullPointerException();
if(list.isEmpty())
return false;
if(list.size() > 1){
if(t.equals(list.get(1)))
return true;
}
if(list.size() == 1)
return false;
if(!duplicateHelper(list.subList(1,list.size()), t)){
return duplicate(list.subList(1,list.size()));
}
return false;
}