您好我对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