scala - Scala - 使用模式匹配和递归在列表中查找重复项
问题描述
我正在尝试解决初学者问题,但无法解决:
如果列表中有任何重复项,则返回 true,否则返回 false。考虑空列表。
def duplicates(a: List[Int]): Boolean = {
case Nil => false
case x :: xs =>
if(xs.contains(x)) true else false
}
但这不起作用。而且它不是递归的。这只是我想开始但我被困住的地方。请在合理的情况下提供帮助并尽量避免非初学者的解决方案。
解决方案
您需要递归调用您的函数。因此,如果 xs 不包含 x,则调用该函数但使用剩余的列表。
def duplicates(a: List[Int]): Boolean = a match {
case Nil => false
case x :: xs =>
if(xs.contains(x)) true else duplicates(xs)
}
推荐阅读
- php - 在我的 PHP 网站中使用其他网站的图像源和 HTML 链接
- node.js - nodejs中如何保存通过api上传的文件
- r - 如何表示我想要满足条件的所有区间中值最低的区间
- java - 字符类型转换为整数类型
- mysql - 如何从表 B 中查询关系活动记录,表 A 有两个字段连接表 B 的主键?
- java-8 - 如何确认我的 GC 问题是内存泄漏还是分配的堆内存不足?
- python - python librosa.core.stft() 和 matlab spectrogram(x) 输出的区别
- xamarin - AWS Cognito 电子邮件忘记密码代码几乎立即过期
- ocaml - reasonml 中的 -> 和 |> 有什么区别?
- sql-server - 访问 INFORMATION_SCHEMA 需要哪些权限?