良好的流定义(数学项目)

时间:2013-10-11 23:39:47

标签: scala stream

我想计算这个套件:

h(-2)=0
h(-1)=1
h(i)=a(i)*h(i-1)+h(i-2), for i>=0

(a给出;对于我的测试,我使用a =(1,1,2),它只有3个术语)

我认为最好的方法是使用流,所以我写道:

val h:Stream[Int]=0#::1#::(h.zipWithIndex.zip(h.tail).zip(h.tail.tail)).map{case(((a,i),b),c)=>{
    liste_a(i-2)*b+a
}}
def h2(i:Int)=h(i+2)

但我有一个...堆栈溢出错误,我不知道它来自哪里。

1 个答案:

答案 0 :(得分:2)

由于这个原因导致堆栈溢出:h.tail.tail。这将尝试计算h的第三个元素(因为流在head中是严格的),并且计算需要使用h.tail.tail的表达式,从而导致无限循环。