問題
4,000,000以下のフィボナッチ数列の偶数の総和を求める問題です。
解答
これまた悩む部分はなし。フィボナッチ数列は指数関数的に大きくなるので、かなり早く答えが出ます。
SRFI-1のfirst
とsecond
はそれぞれリストの最初と次の要素を返すユーティリティ関数です。
(use srfi-1)
(define (solve)
(define fibos
(let gen-fibos-loop ((fibos '(1 1)))
(define next-val (+ (first fibos) (second fibos)))
(if (> next-val 4000000) fibos
(gen-fibos-loop (cons next-val fibos)))))
(apply + (filter even? fibos)))
(define (main argv)
(display (solve))
(newline))
コメント
コメントを投稿