我想计算这个套件:
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)
但我有一个...堆栈溢出错误,我不知道它来自哪里。
答案 0 :(得分:2)
由于这个原因导致堆栈溢出:h.tail.tail
。这将尝试计算h
的第三个元素(因为流在head
中是严格的),并且计算需要使用h.tail.tail
的表达式,从而导致无限循环。