您好我對Clojure/Lisp編程有點新,但我曾經在C語言中使用過遞歸,我寫了下面的代碼將所有可以除以三的數字相加1 100 在Clojure中遞歸地總結所有的三倍數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))
)
)
之間
我的想法是,當步長達到總和結束遞歸,那麼我將有我需要的和可變的,我回報倍數,但我的REPL似乎兩個返回nil變量這裏可能是錯誤的嗎?
我自己是一個學習者(而不僅僅是對你的吸引),只是迭代三次的倍數不會更有效嗎?例如比如'(reduce +(take-while#(<%100)(iterate(partial + 3)0)))'。 – cfrick 2015-02-09 18:06:42