【发布时间】:2012-06-27 03:46:42
【问题描述】:
我刚刚学习在 Clojure 中使用惰性序列,我不确定我在以下代码中做错了什么:
(defn sum [seqn]
(reduce + seqn))
(defn fib
([] (concat [0 1] (fib 0 1)))
([a b] (lazy-seq (cons (+ a b) (fib b (+ a b))))))
(defn up-to [n seqn]
(filter (fn [x] (< x n)) seqn))
(sum (up-to 100 (fib))) => ArithmeticException integer overflow clojure.lang.Numbers.throwIntOverflow (Numbers.java:1388)
求和的数字不应该大于100,那么是什么导致整数溢出?
【问题讨论】:
-
我遇到了这个问题,试图解决同样的问题:Project Euler,问题编号 2!
标签: clojure lazy-evaluation integer-overflow