function recursion in clojure -
im dealing recursion in clojure, dont understand. made small program taked here tries find smalles number can divided numbers 1 20. code wrotte, there must im missing because not work. give me hand? thanks!
(defn smallest [nume index] (while(not ( = index 0)) (do (cond (zero?(mod nume index))(let [dec' index] (smallest nume index)) :else (let [inc' nume] (smallest nume index)))))) edit: looks better loop/recur tried it:
(loop [nume 20 index 20] (if (= index 0) (println nume) (if (zero?(mod nume index)) (recur nume (dec index)) (recur (inc nume) 20))))) working. if curious result--> 232792560
while not think does.
in clojure, (well, almost) immutable, meaning if index 0, 0 in same context. looping until 1 makes little sense.
there number of ways achieve trying do, first, , trivial (i think!) newcomers, understand loop/recur. example:
(loop [counter 0] (when (< counter 10) (println counter) (recur (inc counter)))) in here, counter defined 0, , never changes in usual way. when hit recur, submit new value, in case increment of previous counter, brand new iteration starting @ loop, counter bound 1.
edit: notice however, example return nil. used side effect of println. why return nil? because in last iteration, when clause return nil. if want return else, should perhaps use if , specify returned @ last iteration.
you should read little more paradigm, , perhaps exercises 4clojure better grasp @ this. once do, become simpler think in way, , tremendous benefits of style begin emerge.
good luck!
Comments
Post a Comment