Juliaでフィボナッチ数列をする。

juliaでフィボナッチ数列を実装してみた。ただそれだけ。

入力を受け付けてちょっとした処理をする実装をjuliaでしてみたかったので、試しにフィボナッチ数列を実装してみた。
フィボナッチ数列自体の詳細はwikipediaを参照すると良い。

仕様としては、「標準入力から数値を受け取り、フィボナッチ数列上のその順番の場所の値を返す」、という簡単なもの。

まずは標準入力から値を受け取る部分だが、これは readline() を使えばできる。
次に、標準入力から受け取った値は文字列になので、数値に変換する必要がある。juliaでは parse(Int64, v) でできる。(今回は入力が数値かどうかのエラーハンドリングはしていない。)

あとは、この値に対応するフィボナッチ数列の値を返す関数を実装する。 function fibo() ... end で関数を定義し、その中で if...else...end で特定の値の時の処理を実装すれば良い。

これらをまとめると以下のようになる。

input = readline()
num = parse(Int64, input)

function fibo(n::Int)
    if n == 0
        return 0
    elseif n == 1
        return 1
    else
        return fibo(n - 1) + fibo(n - 2)
    end
end

println(fibo(num))

nの値に応じて結果を返すが、nが0でも1でもない場合はfibo関数を再度呼び出して計算する。

これだけの実装だが、まだjuliaの書き方に慣れていないのと、標準入力やパースの処理などを調べているとそれなりに時間がかかった。
これらがわかっていれば、AtCoderのA問題なら対応できそうな気がしている。


参考