我对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