再帰

cf. 9 再帰 – Recursion – Elixir

Elixir では繰り返しを再帰で行う。例えば、文字列を n 回出力するスクリプトはこんな風になる。

defmodule Recursion do

  def print_multiple_times(msg, n) when n <= 1 do
    IO.puts msg
  end
  def print_multiple_times(msg, n) do
    IO.puts msg
    print_multiple_times(msg, n - 1)
  end

end

Recursion.print_multiple_times("Hello!", 3)
^o^ > elixir recursion.exs
Hello!
Hello!
Hello!

リストの場合には [head|tail] と、終端条件には [] (空リスト)を使えばいい。

defmodule Math do

  def sum_list([], accum) do
    accum
  end

  def sum_list([head|tail], accum) do
    sum_list(tail, head + accum)
  end

end

IO.puts Math.sum_list([1, 2, 3], 0)
^o^ > elixir sum_list.exs
6

再帰についてはこれくらいでいいだろう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください