zahl

Log | Files | Refs | README

syracuse.scm (290B)


      1 (defn! syracuse (n)
      2        (do
      3          (print! n)
      4          (if (= n 1) n
      5            (if (= (% n 2) 0)
      6              (syracuse (/ n 2))
      7              (syracuse (+ (* 3 n) 1))))))
      8 
      9 (defn! syracuse-len (n)
     10        (if (= n 1) 1
     11          (+ 1 (syracuse-len (if (even? n) (/ n 2) (fma 3 n 1))))))