scala - 如何在 Scala 中创建提供 f(n)=f(n-2)+f(n-3) 的流

标签 scala stream

我试过这个:

val s1:Stream[Int]=1 #:: 0 #:: 1 #:: 1 #:: (s1.tail.tail.tail,s1.tail.tail).zipped.map{(c,d) => c + d}.toStream

但是

s1(5)

引发一个stackoverflow...

我成功地用 2 个参数编写了正确的定义:

val s2:Stream[Int]=1 #:: 0 #:: 1 #:: 1 #:: (s2.tail.tail.tail.zip(s2.tail.tail)).map{n=> n._1+n._2}

但我将来会想要添加超过 2 个列表,这就是为什么我希望能够使用“zipped”而不是“zip”。

谢谢

最佳答案

Stream.iterate((1, 0, 1))({case (a, b, c) => (b, c, a + b)}).map(_._3) 怎么样?

关于scala - 如何在 Scala 中创建提供 f(n)=f(n-2)+f(n-3) 的流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31204708/

相关文章:

scala - Kafka java.io.EOFException - NetworkReceive.readFromReadableChannel

java - 无法使用注入(inject)器注入(inject) Play 的 WSClient 实例

scala - 如何强制SBT使用Java 8?

c++ - 将 fstream 作为参数传递

c# - 该流不支持seek操作,使用stream

scala - 如何使方法返回与输入相同的泛型?

scala - Spark-shell 命令抛出错误

java - 使用 ASCII 行处理 Java IO 的最快方法

iphone - Google Drive SDK - 流式传输音频文件

java - 流中的数据不完整