以递归方式添加列表中的值并返回部分和

时间:2017-11-16 04:32:15

标签: list haskell recursion

我有一个清单[1,2,3,4]。我的函数应该返回[1,3,6,10]。这就是我到目前为止所拥有的。我试图创建一个辅助方法来获取值并将其保存到列表并添加它。但它似乎没有用。

summed = []

help x = (x + summed x) : summed  

summing [] = [] 
summing (x:xs) = help x : summing xs 

2 个答案:

答案 0 :(得分:3)

不是一个完整的答案,因为这听起来像是家庭作业。但有几种方法。

你走在正确的轨道上。如果要编写具有两个参数的函数:到目前为止的总和,以及输入列表。如果您将列表的tail传递给下一次迭代,则要添加到累积总和的数字将是您传入的列表的头部。

您还可以查看Data.List中的高阶函数,以获取函数(+)的参数,初始值和列表,并返回函数的重复应用程序列表的每个元素,然后返回结果列表,而不仅仅是最终结果。你正在做的是一个需要学习的重要模式。

答案 1 :(得分:1)

scanl (+) 0 yourList应该这样做。您可以通过查看GHC的标准库文档和资源来了解它的实现方式和原因。 https://downloads.haskell.org/~ghc/latest/docs/html/libraries/base-4.10.0.0/Prelude.html#v:scanl