题目:
请使用递归的形式,写出一个名为 ’sumAcc‘ 的函数,它用一个累积的参数来使一个list的整数加起来求和.
原题是:Write a function called 'sumAcc' in recursive style that uses an accumulating parameter to sum a list of integers.
解答:
这题有没有像那个matches那样有个示例,这个accumulating parameter是类似foldl的那种累加初始数,还是直接就是对list里面的数做累加,无法判断
再问: 没有给例子,但应该是对list里面是数做累加。如果是直接在list里的数做累加,可以使用accumulating parameter吗?如果可以的话,就应该是直接累加,能麻烦您先这样考虑做一下吗?谢谢您!
再答: sumAcc :: [Int] -> Int
sumAcc [] = 0
sumAcc (x:xs) = x + sumAcc xs
sumAcc1 :: Int -> [Int] -> Int
sumAcc1 a b = a + sumAcc b
sumAcc 是计算一个整数列表里面所有的整数值
sumAcc1 是有一个初始值,然后再加上列表里面的整数值
题意我搞不清楚具体该用哪个,就一起写给你了,多半应该是第二个sumAcc1
不直接用递归的话,也可以
sumAcc = foldl (+) 0
sumAcc1 = foldl (+)