(defn fibonacci
  ([n]
    (fibonacci [0 1] n))
  ([x,n]
    (if (< (count x) n)
      (fibonacci (conj x (+ (last x) (nth x (- (count x) 2)))) n)
    x))
)

(defn factorial [n]
  (cond 
    (= n 0)  1
    (> n 0) (* n (factorial (- n 1)))
    )
)

(defn collatz [n,s]
  (if (not= n 1)
    (cond 
      (even? n) (collatz (/ n 2) (+ 1 s) )
      (odd? n) (collatz (+ (* 3 n) 1) (+ 1 s))
    )
    s )
)

(defn collatz-sequence [n s]
  (do (println n) 
    (if (not= n 1)
      (cond 
        (even? n) (collatz-sequence (/ n 2) (+ 1 s) )
        (odd? n) (collatz-sequence (+ (* 3 n) 1) (+ 1 s))
      )
    )

  )
)

(println (collatz 141151 0))
(collatz-sequence 1441151 0)