【发布时间】:2012-01-29 08:32:36
【问题描述】:
我定义了一个函数来返回斐波那契流如下:
def fib:Stream[Int] = {
Stream.cons(1,
Stream.cons(2,
(fib zip fib.tail) map {case (x, y) => println("%s + %s".format(x, y)); x + y}))
}
功能正常,但看起来效率低下(见下面的输出)
scala> fib take 5 foreach println 1 2 1 + 2 3 1 + 2 2 + 3 5 1 + 2 1 + 2 2 + 3 3 + 5 8
所以,看起来函数从一开始就计算了第 n 个斐波那契数。这是正确的吗?你会如何解决它?
【问题讨论】: