4
我目前正在審閱使用Clojure的項目歐拉問題。第二個問題要求你總結第一批400萬斐波那契數。不幸的是我的代碼給了我一個整數溢出異常。Clojure整數溢出使用減少功能
(defn even-fib-sum [n]
(reduce +
(filter even?
(take n (map first (iterate (fn [[x y]] [y (+ x y)]) [0 1]))))))
當我打電話的功能和傳遞價值400萬
(even-fib-sum 4000000) -> throws exception
(even-fib-sum 40) -> 82790070
我相信'+''應該用在函數的最後一行;否則它在'(even-fib-sum 93)'上溢出。 –
是的,這是正確的。謝謝@BobJarvis – adebesin
感謝您解決這個問題 –