首页 > 解决方案 > Scala - 使用模式匹配和递归在列表中查找重复项

问题描述

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

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

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

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

标签: scala

解决方案


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

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

推荐阅读