Contents    Page-10    Prev    Next    Page+10    Index   

Append: Big O Hazard

Suppose we want to make a list (0 1 ... n-1).


user=> (listofn 5)
(0 1 2 3 4)

(defn listofnb [n i answer]       ; version 1
  (if (< i n)
      (listofnb n
                (+ i 1)
                (append answer (list i)) )
      answer))

(defn listofnb [n i answer]       ; version 2
  (if (< i n)
      (listofnb n
                (+ i 1)
                (cons i answer))  ; backwards
      (reverse answer)))  ; fix backwards

(defn listofn [n] (listofnb n 0 '() ) )

What is the Big O of each version?