Project Euler Problem 2に対するHaskellソリューションがあります。これは、400万の制限と、最大10 ^ 100000の制限に対して正常に機能し、マシン上で数秒しかかかりません。
しかし、10 ^ 1000000などのより大きなものの場合、計算は、たとえあったとしても、適切な時間に返されません(数分間放置しようとしました)。ここでの制限要因は何ですか?
evenFibonacciSum :: Integer -> Integer
evenFibonacciSum limit =
foldl' (\t (_,b) -> t + b) 0 . takeWhile ((<=limit) . snd) . iterate doIteration $ (1,2) where
doIteration (a, b) = (twoAB - a, twoAB + b) where
twoAB = 2*(a + b)