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

  • bashirsultani

    bashirsultan

    22 Mart 2010
  • Engadget

    Engadget

    18 EYLÜL 2006
  • Justin Case

    Justin Case

    3 EKİM 2011