;;;; ;; 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 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)