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

  • FILIPeeeK

    FILIPeeeK

    22 Mayıs 2006
  • J Medema

    J Medema

    11 EKİM 2006
  • World Science Festival

    World Scienc

    1 Mayıs 2008