재귀

재귀 에서 Gleam

21개의 연습 문제

재귀 소개

어떤 대상을 자기 자신을 이용해 정의하는 것을 재귀라고 해요. Gleam에서 재귀는 주로 재귀 함수에서 나타나는데, 재귀 함수는 자기 자신을 호출하는 함수예요.

재귀 함수에는 적어도 하나의 _기본 사례_와 적어도 하나의 _재귀 사례_가 있어야 해요. _기본 사례_는 함수를 다시 호출하지 않고 값을 반환해요. _재귀 사례_는 입력값을 바꾸면서 함수를 다시 호출해요. 이렇게 하면 언젠가는 기본 사례에 맞는 입력이 돼요.

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은 재귀 커스텀 타입도 지원해요. 재귀 커스텀 타입은 변형 중 하나 이상이 담고 있는 데이터 안에서 자기 자신을 참조해요.

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개를 더 잠금 해제해요