递归检查列表的第一个元素以查看列表是否包含给定元素

时间:2013-11-26 21:46:22

标签: java recursion tail-recursion

我坚持使用此代码,因为我无法在t.contains方法中搜索t列表。

public static <T> boolean contains(T element, List<T> t) {

        if (t.isEmpty()){
            return false;
        } else if (t.contains(t) == element){
            return true;
        }
    }

请帮忙。

2 个答案:

答案 0 :(得分:3)

而不是

t.contains(t) == element
你可能想说

t.get(0) == element

检查第一个列表元素是否是您要查找的元素。排除后,你必须整理递归调用。这应该涉及

t.subList(1, t.size())

但请注意,这个习惯用法在Java中非常不切实际,会导致性能和内存开销不佳。

答案 1 :(得分:1)

将其更改为:

public static <T> boolean contains(T element, List<T> t) {
    return t.isEmpty()? false
         : t.get(0).equals(element)? true
         : contains(t.subList(1, t.size()));
}