diff options
author | rsiddharth <s@ricketyspace.net> | 2017-01-25 03:50:34 +0000 |
---|---|---|
committer | rsiddharth <s@ricketyspace.net> | 2017-01-25 03:50:34 +0000 |
commit | 5778a7251f6a09a74bb896503c11f2f686b1f09b (patch) | |
tree | 293009fdbd278be2e38ac5f5fe7a4605798940d3 | |
parent | 6afbb4684067339b28dff02ac8252ab932e00a59 (diff) |
(taocp utils math) Add fibonacci functions.
* guile/taocp/utils/math.scm (fib, fib-range): New functions.
-rw-r--r-- | guile/taocp/utils/math.scm | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/guile/taocp/utils/math.scm b/guile/taocp/utils/math.scm index 768d30d..7d49c10 100644 --- a/guile/taocp/utils/math.scm +++ b/guile/taocp/utils/math.scm @@ -2,8 +2,10 @@ ;;;; under gnu general public license version 3 or higher. (define-module (taocp utils math) - #:export (compute-exp1-n)) - + #:use-module (srfi srfi-1) + #:export (compute-exp1-n + fib + fib-range)) (define (compute-exp1-n fx n) "Evaluate function FX for `x` equals 1 to N and return all results @@ -15,3 +17,15 @@ For instance `(lambda (x) (* x x))` is a valid FX. " (cond ((= n 0) '()) (else (cons (fx n) (compute-exp1-n fx (1- n)))))) + +(define (fib n) + "Returns Fibonacci of N." + (cond ((= n 0) 0) + ((= n 1) 1) + (else (+ (fib (- n 1)) (fib (- n 2)))))) + +(define (fib-range start end) + "Returns Fibonacci sequence between START and END." + (let ((f (lambda (x) (cons x (fib x)))) + (count (1+ (- end start )))) + (map f (iota count start)))) |