为了练习,我在 Scala 中编写了一些无用的方法/函数。我正在尝试实现斐波那契序列函数。我在 Haskell 中写了一个作为参考(所以我最终不会写成 Java 风格的)。我在 Haskell 中提出的是:
fib a b = c : (fib b c)
where c = a+b
然后我可以这样做:
take 20 (fib 0 1)
[1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946]
所以我试着把它翻译成Scala:
def fib(a:Int, b:Int):List[Int] = {
val c = a+b
c :: fib(b,c)
}
但是当我尝试使用它时出现堆栈溢出错误。我必须做些什么才能让惰性评估在 Scala 中工作?