【发布时间】:2011-09-27 10:54:12
【问题描述】:
我使用递归为Gray Codes 制作了一个流,如下所示:
val gray: Stream[List[String]] = {
List("") #:: List("0", "1") #:: gray.tail.map {gnext}
}
在哪里
val gnext = (i:List[String]) => i.map {"0" + _} ::: i.reverse.map {"1" + _}
例如
scala> gray(2)
res17: List[String] = List(00, 01, 11, 10)
我真的不需要定义中的 List("0", "1"),因为它可以从元素 0 产生:
scala> gnext(List(""))
res18: List[java.lang.String] = List(0, 1)
那么有没有一种方法/模式可用于仅从第一个元素生成 Stream?
【问题讨论】: