Quantcast
Channel: 初心者タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 21085

Rubyでフィボナッチ数列を出力する

$
0
0

こんにちは、Ruby歴半年のプログラマです。

基本的なアルゴリズムを習得したいと考えて、『Pythonではじめるアルゴリズム入門 伝統的なアルゴリズムで学ぶ定石と計算量』を読んでいます。

本記事は『Pythonではじめるアルゴリズム入門』のPythonのフィボナッチ数列のサンプルコードをRubyで実装しました。

より良いコードの書き方などありましたら教えてもらえると嬉しいです。

環境

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.15.4
BuildVersion:   19E287
$ ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091)[x86_64-darwin19]

Rubyで再帰を使ったフィボナッチ数列

deffibonacci(input)memo={1=>1,2=>1}returnmemo[input]ifmemo.has_key?(input)memo[input]=fibonacci(input-2)+fibonacci(input-1)end# -> 55

例外条件(メモにすでにキーが含まれているか)を確認して、例外条件に合致すればそのバリューを返す、ガード節を定義しています。

returnmemo[input]ifmemo.has_key?(input)

Rubyでループを使ったフィボナッチ数列

deffibonacci(input)(2...input).inject([1,1]){|memo,number|memo<<(memo[number-2]+memo[number-1])}endpfibonacci(10)# -> [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

初期値を用意して畳み込みの演算ができるEnumerable#injectを使っています。


Viewing all articles
Browse latest Browse all 21085

Trending Articles