我正在用Clojure做Project Euler挑战,我想找出斐波那契数列中所有偶数的总和,直到某个特定的数字。
执行此操作的函数代码如下所示。我知道有更快更简单的方法可以做到这一点,我只是在尝试使用循环和递归进行递归。然而,代码似乎不起作用,它从不返回答案。
(defn fib-even-sum [upto]
(loop [previous 1 nxt 1 sum 0]
(if (or (<= upto 1) (>= nxt upto))
sum)
(if (= (mod nxt 2) 0)
(recur nxt (+ previous nxt) (+ sum nxt))
(recur nxt (+ previous nxt) sum))))我不确定我是否可以在同一个循环中重复两次。我不确定是不是这导致了问题?
发布于 2011-06-23 21:37:21
您在第一个IF (在sum之后)中有一个错误的闭合paren ...
(defn fib-even-sum [upto]
(loop [previous 1 nxt 1 sum 0]
(if (or (<= upto 1) (>= nxt upto))
sum
(if (= (mod nxt 2) 0)
(recur nxt (+ previous nxt) (+ sum nxt))
(recur nxt (+ previous nxt) sum)))))现在它可以快速工作了
https://stackoverflow.com/questions/6454424
复制相似问题