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

  • MultiPlayStationMan

    MultiPlaySta

    17 Aralık 2009
  • ::..ηєѕѕ мιχ..::

    ::..ηєѕѕ

    15 Aralık 2006
  • xSammyJoe1

    xSammyJoe1

    19 Temmuz 2011