我有一系列数字:0、1、3、6、10、15,...基本上,你加 1,然后加 2,然后加 3,等等。
我必须创建一个函数,将列表中的这一系列数字返回给定数字 n。我想使用折叠。
所以,系列 5 应该返回 [0, 1, 3, 6, 10, 15]
这是我到目前为止所拥有的:
eachElem n = foldl (+) 0 [0..n]
series n = [x | x <- [(eachElem 0), (eachElem 1)..(eachElem n)]]
基本上,我认为列表中的每个元素都是一个 foldl 操作,因此我制作了一个单独的辅助函数 (eachElem) 来完成此操作。
但是,它返回的列表比我想要的要大得多。
例如。系列 3 => [0,1,2,3,4,5,6] 它应该真正返回 [0,1,3,6]
任何想法为什么会这样?