我需要编写一个返回特定行内容的方法(它的索引作为方法参数输入)。我必须使用递归而不使用循环。
到目前为止,我已经尝试了这个未完成的代码(我不知道如何继续它):
class Sudoku(val grid: List[List[Int]]) {
def r(r: Int): Set[Int] = {
if (grid.isEmpty) Set()
else
}
}
我也不知道Set是如何工作的。任何帮助将非常感激。 PS:我不是要求完整的代码,算法解释就足够了!
答案 0 :(得分:1)
这是对问题的字面解释的答案:
class Sudoku(val grid: List[List[Int]]) {
def row(n: Int): List[Int] =
if (grid.size > n) grid(n) else Nil
}
List
上的应用方法,此处应用于值grid
,可以写成grid apply n
,或简单地grid(n)
返回第n个元素名单。如果该元素不存在(例如grid(1000000)),则抛出异常,因此我们首先检查列表的大小。
我不知道你为什么要返回一个Set,但你可以简单地在结果上调用.toSet
。 Set是一个具有不同元素的集合(每个元素只出现一次),不保证排序。
我也不知道你为什么需要递归,所以我认为这个问题是一个更大问题的一部分。