It depends. Are you trying to optimize for speed? Teaching a particular style of programming? Code size? Range of input values handled correctly? Time to write it?
Something else? Andy On Oct 1, 2012, at 4:45 PM, Grant Rettke wrote: > (ns power.examples) > > (defn non-acc-pow [base exp] > (if (zero? exp) > 1 > (* base (non-acc-pow base (dec exp))))) > > (defn acc-pow [base exp] > (letfn [(loop [base exp acc] > (if (zero? exp) > acc > (recur base (dec exp) (* base acc))))] > (loop base exp 1))) > > (defn lazy-pow [base exp] > (letfn [(loop [cur] > (cons cur (lazy-seq (loop (* cur base)))))] > (nth (take exp (loop base)) (dec exp)))) > > (defn iter-pow [base exp] > (nth (take exp (iterate (partial * base) base)) (dec exp))) > > (defn apply-pow [base exp] > (apply * (repeat exp base))) > > (= 16 > (non-acc-pow 2 4) > (acc-pow 2 4) > (lazy-pow 2 4) > (iter-pow 2 4) > (apply-pow 2 4)) > > Originally posted here: > http://www.wisdomandwonder.com/article/6430/which-power-function-is-right-for-clojure > > -- > ((λ (x) (x x)) (λ (x) (x x))) > http://www.wisdomandwonder.com/ > ACM, AMA, COG, IEEE > > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with your > first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en