2013-11-26 78 views
-5

由于我无法在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; 
     } 
    } 

请帮忙。

+0

你想做什么? – Noctis

+0

你为什么要查看列表是否包含列表而不是't.contains(element)'? – Makoto

+0

t.contains方法中的t列表是什么意思? –

回答

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())); 
} 
3

而不是

t.contains(t) == element 

你大概的意思是说

t.get(0) == element 

这是一个检查的第一个列表元素是否是一个你寻找。在对此进行分类之后,您必须理清递归调用。这应该包括

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

但要注意,这个成语是Java非常不切实际的,它会导致糟糕的性能和内存开销。

相关问题