フィボナッチ数列(問題)
本日は Fibonacci 数列についての問題を解く
fib(n) = fib(n-1)+fib(n-2) 0 1 1 2 3 5 8 13 21 ...
を recursion(再帰)で求めよ
進め方
前回と同様に テスト駆動開発で今後の学習を進めて行く
まずは初項から計算を行う
- red: 表示を行うred → p fib(0)エラーがおこる
green: def をしてみる
deffib(n)ifn==0return0endend
refactoring: assert_equal.rb の assertion(確認)を試しておく
次は、2 項目を求める
- これは初項と同様に求める
次は 3 項目 = 2 項目 + 1 項目
この処理を逐一行っていく。エラーが現れたら随時処理を行っていく
プログラム(最終版)
上記のようにプログラムを書き進めていくと以下のようなプログラムができます
deffib(n)return0ifn==0return1ifn==1returnfib(n-1)+fib(n-2)endrequire'./assert_equal'# assert_equal.rb は同じディレクトリにある事を想定[[0,0],[1,1],[2,1],[3,2],[4,3],[5,5],[6,8],[7,13],[8,21]].eachdo|index,expected|putsassert_equal(expected,fib(index))end
- source ~/Downloads/git/grad_members_20f/members/taiseiyo/memos/class10.org