タグ

フィボナッチに関するfumokmmのブックマーク (3)

  • Groovy 応用: 遅延評価によるフィボナッチ数の計算

    2009.4.8 (鈴) 1. はじめに 2. 遅延評価の実験 3. Promise クラス 4. フィボナッチ数の計算 5. おわりに Groovy 目次 1. はじめに Scheme に見られるような delay と force を定義して Groovy に遅延評価の機能を導入し,その上にフィボナッチ (Fibonacci) 数の無限データ構造を構築する。 その過程を通じて,入門編で十分に紹介できなかった Groovy の機能のいくつかを読者に紹介する。 2. 遅延評価の実験 遅延評価 (lazy evaluation) とは,式の値が実際に必要になるまでその評価を遅延する評価方法である。 問題によっては,遅延評価を使うとエレガントに解くことができる。 いくつかの例を より実用的な L2Lisp.rb / 付録: 簡単な遅延評価のプログラム例 に示した。 プログラミング言語 Schem

  • visible true : Scalaで無限リストを使ってフィボナッチ数列

    2010年10月22日00:53 カテゴリScala Scalaで無限リストを使ってフィボナッチ数列 元ネタ:基礎を終えた人のScalaミニtipslazy val fib: Stream[Int] = Stream.cons(0, Stream.cons(1, fib.zip(fib.tail).map(p => p._1 + p._2)))これ、Scalaで無限リストと遅延評価でフィボナッチ数列を実現してるんですが、 もう、何やってるかぜんっぜんわからなかったので、がんばってみました。 登場人物lazy valStreamStream.consStream.zipStream.tailStream.map_1, _2という表現Stream.takeこれ、これらが判ればきっと解る! 1.lazy val 遅延評価! valとかにlazyとか付けると遅延評価になります! 遅延評価ってなんだ

    fumokmm
    fumokmm 2011/01/22
    展開のしかたが面白い記事。Scalaで遅延評価する場合はlazyね。
  • 数論で学ぶアルゴリズム(仮) - フィボナッチ数列

    Common Lisp 再帰 by pgf2 > (defun fib(n) (cond ((= n 0) 0) ((= n 1) 1) (t (+ (fib (- n 1)) (fib (- n 2)))))) 繰り返し by pgf2 > (defun fib(n) (cond ((= n 0) 0) ((= n 1) 1) (t (let ((result 0) (x 0) (y 1)) (dotimes (i (- n 1) result) (setq result (+ x y)) (setq x y) (setq y result)))))) 一般項 by pgf2 > (defun fib(n) (truncate (* (/ 1 (sqrt 5)) (- (expt (/ (+ 1 (sqrt 5)) 2) n) (expt (/ (- 1 (sqrt 5)) 2) n))

    fumokmm
    fumokmm 2010/09/23
    いろいろあるなぁ。
  • 1