再帰

再帰 の Gleam

21個の演習

再帰について

何かをそれ自身を用いて定義できることを、再帰といいます。Gleamでは、再帰は再帰関数でよく見られます。再帰関数とは、自分自身を呼び出す関数のことです。

再帰関数には、少なくとも1つの_基底ケース_と、少なくとも1つの_再帰ケース_が必要です。_基底ケース_は、関数を再び呼び出さずに値を返します。_再帰ケース_は、入力に変更を加えながら関数を再び呼び出し、いずれ基底ケースに一致するようにします。

pub fn factorial(x: Int) -> Int {
  case x {
    // Base case
    1 -> 1

    // Recursive case
    _ -> x * factorial(x - 1)
  }
}

Gleamにはループのための特別な構文がないため、繰り返しはすべて再帰で行います。

pub fn list_length(list: List(String)) -> Int {
  case list {
    [] -> 0
    [_, ..rest] -> 1 + list_length(rest)
  }
}

Gleamは再帰的なカスタム型もサポートしています。再帰的なカスタム型では、そのバリアントのうち1つ以上が、含んでいるデータの中で自分自身を参照します。

pub type RussianDoll {
  Child               // Base case
  Mother(RussianDoll) // Recursive case
}
let very_big_doll = Mother(Mother(Mother(Child)))
let small_doll = Mother(Child)
GitHubで編集 リンクは新しいウィンドウまたはタブで開きます

再帰を学習する

練習はロックされています

再帰を練習するには、あと8個の演習のロックを解除してください