2

一个很好的问题,它说我们应该流/查看或迭代我们的集合以使其按需生成。很明显。我只是不明白我应该在下面的演示中应用.viewor什么.iterate

val l1 = List("10", "00", "0")
def gen(depth: Int): Iterable[String] = if (depth == 1) l1 else {
    for (sub <- gen(depth-1); item <- List(depth + sub, sub+sub, sub)) yield item
} 

我应该将它们应用于gen(depth-1)还是应用于List(depth+..)

顺便说一句,我应该内联l1(depth == 1) l1 else?它不在其他任何地方使用。我只是担心它会为每一片叶子创建一个新列表。

4

1 回答 1

0

我将不得不尝试它,但我会说List(depth+..).view,因为你不会多次使用相同的值。我认为考虑到你在那里的递归,它会给你一种 DFS 遍历。

是的,我不会内联它,而是l1那样生活。我什至会这样做val l1 = List("10", "00", "0").view

于 2016-01-26T14:18:46.910 回答