这是我认为 scala 中斐波那契数的正确且有用的定义:
lazy val fibs:Stream[Int] = 0 #:: 1 #:: (fibs,fibs.tail).zipped.map(_+_)
但是,我收到以下错误:
fibs take 10 foreach println
0
1
java.lang.StackOverflowError
at scala.collection.mutable.LazyBuilder.(LazyBuilder.scala:25)
at scala.collection.immutable.Stream$StreamBuilder.(Stream.scala:492)
at scala.collection.immutable.Stream$.newBuilder(Stream.scala:483)
at...
我猜 zipped 不能与流一起正常工作?关于如何使这项工作的任何建议,或者为什么这不(不应该?)工作?