From 0e0ab335087338d208eb3d1780e2de2c4ad0fc08 Mon Sep 17 00:00:00 2001 From: bd Date: Sat, 18 May 2024 19:26:37 -0600 Subject: Add fibonacci code and tests --- fibonacci/fibonacci-test.scm | 23 +++++++++++++++++++++++ fibonacci/fibonacci.scm | 17 +++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 fibonacci/fibonacci-test.scm create mode 100644 fibonacci/fibonacci.scm (limited to 'fibonacci') diff --git a/fibonacci/fibonacci-test.scm b/fibonacci/fibonacci-test.scm new file mode 100644 index 0000000..f0cb6bf --- /dev/null +++ b/fibonacci/fibonacci-test.scm @@ -0,0 +1,23 @@ +(use-modules (srfi srfi-64) + (fibonacci)) + +(test-begin "harness") + +(test-equal "length-zero-sequence" + '() + (fibonacci 0)) + +(test-equal "length-one-sequence" + '(0) + (fibonacci 1)) + +(test-equal "length-three-sequence" + '(0 1 1) + (fibonacci 3)) + +(test-equal "length-fifteen-ssequence" + '(0 1 1 2 3 5 8 13 21 34 55 89 144 233 377) + (fibonacci 15)) + + +(test-end "harness") diff --git a/fibonacci/fibonacci.scm b/fibonacci/fibonacci.scm new file mode 100644 index 0000000..8563587 --- /dev/null +++ b/fibonacci/fibonacci.scm @@ -0,0 +1,17 @@ +(define-module (fibonacci)) + + +(define-public (fibonacci k) + "Returns a fibonacci sequence of k length +as a list" + (fibonacci-helper k 0 1 '())) + +(define (fibonacci-helper k n1 n2 lst) + "Recursively generates and appends numbers in the +fibonacci sequence." + (if (zero? k) + lst + (fibonacci-helper (- k 1) + n2 + (+ n1 n2) + (append lst (list n1))))) -- cgit v1.2.3