« Project Euler --- Problem 5 | トップページ | Project Euler --- Problem 9 »

2009年1月17日 (土)

Project Euler --- Problem 2

またしても、「Project Euler」ネタです。

Problem 2 は「フィボナッチ数列の項が 400 万を超えない範囲で、偶数の項の総和を求めよ」という問題でした。

フィボナッチ数列を再帰的に求めようとすと無駄な計算が多くなるので、反復的に求めます。

Scheme は、データを一度リストの形にしてしまえば、後の加工が非常に簡単になります。

(define problem-002
  (lambda (n)

 

    (define fib-list
      (lambda ()
        (let loop ([a 1] [b 1] [result '()])
          (if (>= a n)
              result
              (loop (+ a b) a (cons a result))))))

 

    (printf "~d~%" (apply + (filter even? (fib-list))))))

 

(problem-002 4000000)

« Project Euler --- Problem 5 | トップページ | Project Euler --- Problem 9 »

Project Euler」カテゴリの記事

Scheme」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/112020/43767651

この記事へのトラックバック一覧です: Project Euler --- Problem 2:

« Project Euler --- Problem 5 | トップページ | Project Euler --- Problem 9 »

2016年7月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
フォト

最近のトラックバック

無料ブログはココログ