如何使用该代码获得斐波那契序列的总和:
fibs= 0 : 1 : zipWith (+) fibs (tail fibs)
编辑:取5个fibs给出[0,1,1,2,3]列表,所以第5个元素的值是3,要提取它我们要输入:'last(take(5 fibs))'我们得到3.等等
如果我们使用解释器来寻找第5个元素我们得到[0,1,2,3]的列表,最后一个元素与第5个元素的值相同,如何得到该列表的LAST元素?
我可以使用last
制作它吗?你有任何想法吗,可以吗?
答案 0 :(得分:5)
该定义产生无限整数流。没有最后一个元素。
如果您想要从列表中索引特定元素,则可以使用(!!)
运算符进行索引:
> [1..] !! 7
8
答案 1 :(得分:4)
我并不完全清楚你在问什么,但是如果你有一个非空的非无限(例如,不是fibs
,但是,例如,某些take n fibs
n
}})list,您确实可以通过将last
应用于它来获取其最后一个元素。或者,如果你只想要列表的第n个元素(从零开始并假设列表至少有n + 1个元素),你可以listName !! n
来提取它。
答案 2 :(得分:1)
好吧,如果你只想要列表中的第10个元素:
last (take 10 fibs)
如果你想要前10个元素的总和:
sum (take 10 fibs)
顺便说一下,使用递归时,对于fibs有一个稍微简单的表达式:
fibs = (fibgen 0 1) where fibgen a b = a : fibgen b (a+b)