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

  • adrianisen

    adrianisen

    25 Kasım 2009
  • hydejiaqi

    hydejiaqi

    12 Mart 2008
  • pendrop gaming

    pendrop gami

    4 ŞUBAT 2013