今日はフィボナッチ数列。20 項目までを出力する。
defmodule Fibonacci do
def fib(n) do
fib_iter(0, 1, n, 1)
end
defp fib_iter(a, b, n, i) do
if i > n do
[]
else
[a | fib_iter(b, a + b, n, i + 1)]
end
end
end
IO.inspect Fibonacci.fib(20)
^o^ > elixir fib.exs [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181]
上のスクリプトは次のようにも書ける。
defmodule Fibonacci do def fib(n), do: fib_iter(0, 1, n, 1) defp fib_iter(_, _, n, i) when i > n, do: [] defp fib_iter(a, b, n, i), do: [a | fib_iter(b, a + b, n, i + 1)] end IO.inspect Fibonacci.fib(20)
関数の本体が十分に短ければこっちのほうが見やすいかも。
当然同じ結果になる。
^o^ > elixir fib2.exs [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181]
「フィボナッチ数列 in Elixir」への1件のフィードバック