Stream文档中有一个很好的例子可以获得斐波那契数字.
val fibs:Stream[Int] = 0 #:: 1 #:: fibs.zip(fibs.tail).map { n => n._1 + n._2 }
Run Code Online (Sandbox Code Playgroud)
我想通过使用滑动实现它,所以我尝试了以下.
val test = 0 #:: 1 #:: Stream.empty
test.sliding(2).map(_.sum).toStream
Run Code Online (Sandbox Code Playgroud)
最后一行正确获取Stream(1,?)但是当我将其连接到上面时,如下所示,当我尝试获得第3个成员时,我得到一个错误(可能是堆栈溢出,我看不到确切的错误消息,因为它太长了) .
val fibs2:Stream[Int] = 0 #:: 1 #:: fibs2.sliding(2).map(_.sum).toStream
Run Code Online (Sandbox Code Playgroud)
如果我按如下方式给出3个数字,它会计算前两个数字的总和.但那不是斐波纳契数.
val fibs3:Stream[Int] = 0 #:: 0 #:: 1 #:: fibs3.sliding(2).map(_.sum).toStream
Run Code Online (Sandbox Code Playgroud)
任何想法或帮助将不胜感激.
更新