factorial functions

This commit is contained in:
Pekka Laiho 2020-06-06 16:25:49 +07:00
parent fd5e846f2f
commit 75861bf1c7
2 changed files with 11 additions and 4 deletions

7
mad/fact.mad Normal file
View File

@ -0,0 +1,7 @@
;; Functions to calculate factorial
;; Recursive version
(def recFact (fn (n) (if (< n 2) 1 (* n (recFact (- n 1))))))
;; Apply version
(def applyFact (fn (n) (if (< n 2) 1 (apply * (range 1 (+ n 1))))))

View File

@ -1,11 +1,11 @@
; Functions to calculate Fibonacci numbers ;; Functions to calculate Fibonacci numbers
; Slow recursive version ;; Slow recursive version
(def slowFib (fn (n) (if (< n 2) n (+ (slowFib (- n 1)) (slowFib (- n 2)))))) (def slowFib (fn (n) (if (< n 2) n (+ (slowFib (- n 1)) (slowFib (- n 2))))))
; Return the sum of the last 2 numbers in a sequence ;; Return the sum of the last 2 numbers in a sequence
(def sumOfLast (fn (l) (+ (last l) (get l (- (len l) 2))))) (def sumOfLast (fn (l) (+ (last l) (get l (- (len l) 2)))))
; Faster version, return vector of n numbers ;; Faster version, return vector of n numbers
(def fibListRec (fn (n l) (if (< (len l) n) (fibListRec n (push l (sumOfLast l))) l))) (def fibListRec (fn (n l) (if (< (len l) n) (fibListRec n (push l (sumOfLast l))) l)))
(def fibList (fn (n) (fibListRec n [0 1]))) (def fibList (fn (n) (fibListRec n [0 1])))