SORU
20 ŞUBAT 2011, Pazar


Nasıl clojure içinde üs yapmak için?

Nasıl clojure içinde üs yapabilir miyim? Şimdilik sadece tamsayı üs ihtiyacım var, ama soru kesirler için de geçerli.

CEVAP
20 ŞUBAT 2011, Pazar


özyineleme (bu, patlar yığın izle) klasik

(defn exp [x n]
     (if (zero? n) 1
         (* x (exp x (dec n)))))

kuyruk özyineleme

(defn exp [x n]
  (loop [acc 1 n n]
    (if (zero? n) acc
        (recur (* x acc) (dec n)))))

fonksiyonel

(defn exp [x n]
  (reduce * (repeat n x)))

sinsi (darbeler yığını, ama o kadar kolay)

(defn exp-s [x n]
  (let [square (fn[x] (* x x))]
    (cond (zero? n) 1
          (even? n) (square (exp-s x (/ n 2)))
          :else (* x (exp-s x (dec n))))))

kütüphane

(require 'clojure.contrib.math)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bogdan Gabriel

    Bogdan Gabri

    5 Aralık 2006
  • ipsy Makeup Tips

    ipsy Makeup

    19 ŞUBAT 2009
  • Tomas N

    Tomas N

    14 Kasım 2010