我对 Haskell 比较陌生。问题是要找到不大于 400 万的所有偶数斐波那契数的总和。我不能使用列表。
如果我理解正确,以下解决方案是错误的,因为它使用列表:
my_sum = sum $ filter (odd) $ takeWhile (< 4000000) fibs
其中fibs是所有斐波那契数列的列表。
不知何故,我发现很难在 Haskell 中不考虑列表。谁能指导我解决这个问题?
问候
编辑:
如果有人有兴趣,我已经解决了这个问题。这是代码(看起来很笨拙,但仍然有效):
findsum threshold = findsum' 0 1 0 threshold
findsum' n1 n2 accu t
| n2 > t = accu
| odd n2 = findsum' n2 n3 accu t
| otherwise = findsum' n2 n3 accu2 t
where
n3 = n2 + n1
accu2 = accu + n2