Треки
/
Gleam
Gleam
/
Салабус
/
Рекурсія
Ре

Рекурсія у Gleam

1 вправа

Про концепцію Рекурсія

Здатність чогось визначатися через самого себе називається рекурсією. У 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 вправ, щоб практикувати концепцію Рекурсія