6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ruby 演習メモ V (Recursive Fibonacci)

Last updated at Posted at 2020-11-25

目的

ruby のコードを実際に書いてみよう.
今回は第 V 弾.

お題:Fibonacci数列

fib(n) = fib(n-1)+fib(n-2)
0 1 1 2 3 5 8 13 21 ...

を recursion (再帰) で求める.
(ここにある課題)

解説

以下のような関数 fib をつくる

  • 関数名 : fib
  • 入力 : n (項の番号)
  • 出力 : 第 n 項の値

今回は TDD (Test Driven Development : テスト駆動開発) を意識して解説を書く.
解説を書こうと思ったけど, 先程リンク先にある内容と同じになるので割愛. (細かな解説はリンク先を見よう.)

一応, TDD の作業概要を以下に書いておく.

  • テストを作る
  • red : エラーを出す
  • green : エラーをなくす (green)
  • refactoring : code を綺麗にする (refactoring)

まとめ

TDD で良い感じに Fibonacci 数列の code を書けた. 素晴らしい.

今回書いた code の全体

最終的にこうなった. ファイル名は "fibonacci.rb".


require './assert_equal_final'

def fib(n)
  return 0 if n==0
  return 1 if n==1
  return fib(n-1) + fib(n-2)
end

if $PROGRAM_NAME == __FILE__
  [[0,0],[1,1],[2,1],[3,2],[4,3],
   [5,5],[6,8],[7,13],[8,21],[9,34]].each do |index, expected|
    assert_equal(expected, fib(index))
  end
end

参考資料

チャート式ruby-V(Recursive Fibonacci)


  • source ~/Lecture/multiscale_simulation/grad_members_20f/members/gagagagazelle/docs/c5_fibonacci.org
6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?