在Haskell中构造Fibonacci序列

时间:2016-09-15 17:14:33

标签: haskell recursion fibonacci

我是Haskell的完全初学者,刚刚遇到以下简洁表达式来构造Fibonacci序列:

fibs = 0 : 1 : zipWith (+) fibs (tail fibs)

我想我理解每件作品的作用(:zipWithtail),我知道某种递归正在发生,但我不太确定如何。

1 个答案:

答案 0 :(得分:1)

前两个值为0和1.此后,通过添加当前和前一个系列,移动一个位置来附加(压缩)元素。

例如,如果"当前" list是(0,1,1,2,3,5),然后尾部是(1,1,2,3,5)。添加这些给我们......

fibs = (0, 1, 1, 2, 3, 5)
tail = (1, 1, 2, 3, 5)
sum  = (1, 2, 3, 5, 8)

这给了我们表达式

0: 1: (1, 2, 3, 5, 8)

...这导致列表的单元素扩展。当我们无限制地重复这个时,我们得到Fibonacci序列。