Scala-使用模式匹配和递归在列表中查找重复项

时间:2018-11-05 21:12:55

标签: scala

我正在尝试解决初学者的问题,但无法解决问题:

如果列表中有重复项,则返回true,否则返回false。考虑了空列表。

def duplicates(a: List[Int]): Boolean = {
  case Nil => false
  case x :: xs =>
    if(xs.contains(x)) true else false
}

但这不起作用。而且它不是递归的。这只是我想开始的地方,但我遇到了困难。请帮助,并在合理的情况下尽量避免使用非初学者的解决方案。

1 个答案:

答案 0 :(得分:1)

您需要递归调用函数。因此,如果xs不包含x,则调用函数,但使用其余列表。

def duplicates(a: List[Int]): Boolean = a match {
  case Nil => false
  case x :: xs =>
    if(xs.contains(x)) true else duplicates(xs)
}