Я выполняю задачу Project Euler в Clojure и хочу найти сумму всех четных чисел в последовательности Фибоначчи до определенного числа.
Код функции, которая делает это, приведен ниже,Я знаю, что есть более быстрые и простые способы сделать это, я просто экспериментирую с рекурсией, используя loop и recur.Однако код, похоже, не работает, он никогда не возвращает ответ.
(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))))
Я не был уверен, смогу ли я повторить дважды в одном цикле или нет.Я не уверен, если это вызывает проблему?