LoginSignup
2
2

More than 5 years have passed since last update.

再帰呼び出しを用いないフィボナッチ数列の計算

Last updated at Posted at 2015-02-22

問題

フィボナッチ数列の第n項を求めるプログラムを再帰呼出しを用いずに書いて下さい。
ただしnはコマンドライン引数で得るものとします。

こちらのサイトから引用

解答

fibonacci_number_not_recurrence.rb
# フィボナッチ数列を格納する配列
# 例に従い初項は0,第2項は1
$fibonacchi_array = [0,1]

# 第n項のフィボナッチ数を求めるメソッド
# term_n:求めたいフィボナッチ数列の項数
# 返り値:第n項のフィボナッチ数
def calc_fibonacchi(term_n)
  # 第0項か第1項が指定されたらそのまま返す
  if term_n == 0 || term_n == 1
    $fibonacchi_array[term_n]
  # それ以外だったらterm_1回足し算をする
  else
    (term_n - 1).times do |n|
      # n番目とn+1番目を足し算してn+2番目を求める
      $fibonacchi_array.push($fibonacchi_array[n] + $fibonacchi_array[n + 1])
    end

    #配列の最後の要素を返す
    $fibonacchi_array.last
  end
end


# 求めたい項数を入力
puts "フィボナッチ数列の第n項を求めます"
print "nをいくつにしますか? : "
n = gets.to_i

# 第n項のフィボナッチ数列の数を求める
fibonacchi_n = calc_fibonacchi(n)

# 答えを表示
puts "フィボナッチ数列の第#{n}項の数は#{fibonacchi_n}です"

結果

フィボナッチ数列の第n項を求めます
nをいくつにしますか? : 10
フィボナッチ数列の第10項の数は55です
2
2
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
2
2