Clojure China

另类斐波那契数列实现方式-zipper

#1
#!/usr/bin/env clojure

(require '[clojure.zip :as z])

(defn my-zipper [n] (z/zipper #(> % 2) #(list (-> % dec) (-> % dec dec)) (fn [a-zip _] a-zip) n))

(defn zipper-count [root] (if-not (z/branch? root) 1 (+ (-> root z/down zipper-count) (-> root z/down z/right zipper-count))))

(defn fiber [n] (-> n my-zipper zipper-count))

(-> 30 fiber prn time)