Привет, я немного новичок в программировании Clojure/Lisp, но я использовал рекурсию раньше на C-подобных языках, я написал следующий код, чтобы суммировать все числа, которые можно разделить на три от 1 до 100.Суммируя все кратные три рекурсивно в Clojure
(defn is_div_by_3[number]
(if(= 0 (mod number 3))
true false)
)
(defn sum_of_mult3[step,sum]
(if (= step 100)
sum
)
(if (is_div_by_3 step)
(sum_of_mult3 (+ step 1) (+ sum step))
)
)
Моя мысль была закончить рекурсию, когда шаг достигает суммы, то я бы все кратные мне нужно в переменную сумму, что я вернусь, но мой РЕПЛ, кажется, возвращая ноль для обоих переменные, что может быть неправильно здесь?
Будучи учеником сам (и не только на вас), разве было бы более эффективно просто перебирать кратные три? например например '(reduce + (take-while # (<% 100) (итерация (частичная + 3) 0)))'. – cfrick