aboutsummaryrefslogtreecommitdiff
path: root/scheme/002-even_fibonacci_numbers.scm
diff options
context:
space:
mode:
Diffstat (limited to 'scheme/002-even_fibonacci_numbers.scm')
-rw-r--r--scheme/002-even_fibonacci_numbers.scm33
1 files changed, 33 insertions, 0 deletions
diff --git a/scheme/002-even_fibonacci_numbers.scm b/scheme/002-even_fibonacci_numbers.scm
new file mode 100644
index 0000000..65b567d
--- /dev/null
+++ b/scheme/002-even_fibonacci_numbers.scm
@@ -0,0 +1,33 @@
+;;;;
+;; Even Fibonacci numbers
+;; Problem 2
+;;
+;; Each new term in the Fibonacci sequence is generated by adding the previous two terms. By
+;; starting with 1 and 2, the first 10 terms will be:
+;; 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
+;; By considering the terms in the Fibonacci sequence whose values do not exceed four
+;; million, find the sum of the even-valued terms.
+;;;;
+
+(load "utils.scm")
+
+(define +top+ 4000000)
+
+(define fib
+ (lambda (n)
+ (case n
+ ((0) 1)
+ ((1) 1)
+ (else (+ (fib (- n 1))
+ (fib (- n 2)))))))
+
+(define result
+ (sum
+ (filter (lambda (x) (= 0 (modulo x 2)))
+ (do ((x 1 (+ x 1))
+ (f 1 (fib x))
+ (fs '()))
+ ((>= f +top+) fs)
+ (set! fs (cons f fs))))))
+
+(display result)